언어/디자인패턴
-
템플릿 메서드(Template Method) 패턴언어/디자인패턴 2024. 5. 26. 22:31
템플릿 메서드 패턴이란? 여러 클래스에서 공통으로 사용하는 메서드를 템플릿화하여 상위 클래스에서 정의하고, 하위 클래스마다 세부 동작 사항을 다르게 구현하는 패턴이다.변하지 않는 기능은 상위 클래스에 만들어두고 자주 변경되어 확장할 기능은 하위 클래스에서 만들도록 하는 것이다.상속이라는 기술을 극대화하여, 알고리즘의 뼈대를 맞추는 것에 초점을 둔다. 공통된 부분에서 다른 부분 혹은 확장 가능한 부분을 제공하는 느낌! (공통을 따로 뺀다는 느낌보다 공통은 그대로 두고, 바뀌는 부분만 새로 만들도록 한다!) AbstractClass(추상 클래스) : 템플릿 메소드를 구현하고, 템플릿 메소드에 돌아가는 추상 메서드를 선언한다. 이 추상 메서드는 하위클래스 ConcreateClass에서 구현된다.Concrete..
-
전략 패턴 (Strategy)언어/디자인패턴 2024. 5. 26. 21:41
전략 패턴이란?실행(런타임) 중 알고리즘 전략을 선택하여 객체 동작을 실시간으로 바뀌도록 하는 행위 디자인 패턴이다.전략은 일종의 알고리즘 혹은 특정 목표를 수행하기 위한 행동 계획을 의미한다.어떤 일을 수행하는 알고리즘이 여러가지 일때, 동작들을 미리 전략으로 정의하여, 손쉽게 교체하는 방법이다. 알고리즘 변형이 빈번할 경우 적합하다. 전략 인터페이스 : 모든 전략 구현체에 대한 공용 인터페이스 전략 객체(concreate): 전략 인터페이스 구현체 컨텍스트(Context) : 알고리즘을 실행할 때 해당 알고리즘과 연결된 전략 객체 메서드 호출 (전략을 사용하는 큰 기능)클라이언트 : 전략 객체 전달, 해당 전략 사용해서 결과 얻음class Client{ public static void main(St..
-
디자인패턴 (8) - 어댑터 패턴언어/디자인패턴 2023. 9. 12. 16:41
1. 어댑터 패턴이란? - 클래스를 어댑터로 사용하는 구조 패턴이다. - 호환성이 없는 인터페이스 때문에 함께 동작할 수 없는 클래스들을 함께 작동하도록 변환해주는 역할 - 이미 구축되어 있는 것을 새로운 어떤것에 사용할 때 양 쪽 간의 호환성을 유지해 주기 위해 사용하는 것 - 호환성 및 신규 기능 확장 2. 어댑터 패턴 구조 - 상속 혹은 합성해서 작업할 수 있다. 2.1 객체 어댑터 - 합성된 맴버에게 위임을 이용한 어댑터 패턴이다. - 자기가 해야할 일을 클래스 멤버 객체의 메소드에게 다시 시킴 - 합성을 활용하여 런타임 중 어댑터가 결정되어 유연하다. - 하지만, Adaptee객체를 필드 변수로 저장해야해서 공간을 차지한다. - Adaptee : 어댑터 대상 객체 -> 기존 시스템/외부 시스템/..
-
디자인 패턴 (7) - 커맨드 패턴언어/디자인패턴 2023. 9. 12. 11:31
1. 커맨드 패턴이란? - 실행될 기능을 캡슐화하여 여러 기능을 실행할 수 있는 재사용성이 높은 클래스 설계 패턴 - 이벤트가 발생했을 때 실행될 기능이 다양+변경 가능성이 있을때, 이벤트 발생 클래스 변경하지 않고 재사용 - 행위 패턴 중 하나이다. - 실행할 기능 캡슐화하여 실행 요구 호출자(클라이언트)클래스와 실제 기능 수신자 클래스 의존성 제거 - 실행될 기능이 변경되어도 호출자 클래스에 어떠한 수정 없이 그대로 사용가능 1.1 커맨드 패턴의 구조 - Command : 실행될 기능에 대한 인터페이스 - ConcreteCommand: 실제 실행되는 기능 구현 - Invoker : 기능의 실행을 요청하는 호출자 클래스 - Receiver: ConcreteCommand에서 execute 메서드 구현시 ..
-
디자인 패턴 (6) - 싱글톤 패턴언어/디자인패턴 2023. 9. 11. 16:23
1. 싱글톤 패턴이란? - 단 하나의 유일한 객체를 만들기 위한 코드 패턴 - 메모리를 절약하기 위해 인스턴스 필요시 새로 만들지 않고 기존의 인스턴스 가져와 활용하는 기법 - 보통 싱글톤 패턴이 적용된 객체가 필요한 경우는 리소스를 많이 차지하는 역할을 하는 무거운 클래스들 ex 데이터 연결 모듈 (스레드풀,커넥션 풀 등등) 1.1 싱글톤 패턴 구현 원리 - 생성자에 private를 붙여주기만하면된다. - 전역변수로 미리 생성된 객체를 얻는다. 1.2 여러가지 싱글톤 패턴 구현 방법 - Eager Initialization > 가장 직관적이면서 심플한 방법 > static final이라 멀티 쓰레드 환경에서도 안전하다. > static멤버는 당장 객체 사용하지 않더라도 메모리에 적재하기 때문에 리소스가..
-
디자인 패턴 (5) - 추상 팩토리 패턴언어/디자인패턴 2023. 9. 11. 14:09
1. 추상 팩토리 패턴이란? - 연관성 있는 객체 군이 여러개 있을 경우 이를 묶어 추상화 - 구체적 상황이 주어지면, 팩토리 객체를 통해 객체 군을 구현화 하는 생성 패턴이다. - 핵심은 제품군 집합을 타입별로 찍어낼 수 있다는 점이다. 1.1 추상 팩토리 패턴 구조 1. AbstractFactory: 최상위 공장 클래스 -> 여러 제품군을 생성하는 여러 메서드를 포함 2. ConcreteFactory: 서브 공장 클래스들은 타입에 맞는 제품 객체 반환하도록 메소드 오버라이딩 3. AbstractProduct: 각 제품군을 추상화 (대분류)한 인터페이스 4. ConcreteProduct : 각 타입 제품의 구현체 -> 팩토리를 통해 생성됨 5. Client : 추상화된 인터페이스만으로 제품을 받으므로,..
-
디자인 패턴 (4) - 팩토리 패턴언어/디자인패턴 2023. 9. 11. 12:28
1. 팩토리 메소드 패턴이란? - 객체 생성 고장 클래스로 캡슐화 처리하여 대신 생성하는 생성 디자인 패턴이다. - 즉 클라이언트가 직접 new 연산자를 통해 객체를 생성하는 것이 아닌, 제품 객체 생성을 도맡은 공장 클래스 생성 -> 이를 상속하는 서브 클래스에서 제품 생성 책임 - 객체 생성에 필요한 템플릿 미리 구성하고, 객체 생성에 관한 전처리나 후처리를 생성 과정을 다양하게 처리 1.2 팩토리 메서드 패턴 구조 1. Creator : 최상위 공장 클래스, 팩토리 메서드 추상화 -> 서브클래스가 구현하도록 한다. -> 객체 생성 처리 메서드: 객체 생성 관한 전처리, 후처리 템플릿 메소드 -> 팩토리 메서드 : 서브 공장 클래스에서 재정의할 객체 생성 추상 메서드 (각 서브 팩토리의 공통코드) 2..
-
디자인패턴 (3) - 데코레이터패턴언어/디자인패턴 2023. 9. 8. 16:42
1. 데코레이터 패턴이란? - 데코레이터 패턴은 대상 객체에 대한 기능 확장이나 변경이 필요할 때 - 상속이나 구현이 아닌, 객체의 결합을 통해 서브 클래싱을 대신 쓸 수 있는 구조 패턴이다. - 데코레이터 패턴을 이용하면 필요한 추가 기능의 조합을 런타임에서 동적으로 생성할 수 있다. - Component : 원본 객체와 장식된 객체 모두 묶는 역할 ( 모두를 하나의 타입으로 묶음 [공통 책임 수행]) - ConcreteComponent: 원본 객체 (추후에 데코레이팅 될 객체임) - Decorator: 추상화된 장식자 클래스 -> 원본 객체를 구성(의존)한 필드와 인터페이스의 구현 메서드 가짐 - ConcreteDecorator : 구체 장식자 클래스 * 변화할 수 있는 행동을 인터페이스화 -> 이를..