21.07.28
1. 정의
상세화된 서브클래스를 정의하지 않고도 여러 객체의 군을 생성하기 위한 인터페이스를 제공하는 패턴
다른 이름 : Kit(키트)
1-1. 구조
- AbstractFactory : 개념적 제품에 대한 객체를 생성하는 연산으로 인터페이스 정의
- ConcreteFactory : 구체적인 제품에 대한 객체를 생성하는 연산 구현
- AbstractProduct : 개념적 제품 객체에 대한 인터페이스 정의
- ConcreteProduct : 구체적으로 팩토리가 생성할 객체를 정의하고 AbstractProduct가 정의하는 인터페이스를 구현
- Client : AbstractFactory와 AbstractProduct 클래스에 선언된 인터페이스를 사용
1-2. 활용성
- 객체가 생성되거나 구성, 표현되는 방식과 무관하게 시스템을 독립적으로 만들고자 할 때
- 여러 제품군 중 하나를 선택해서 시스템을 설정해야 하고 한 번 구성한 제품을 다른 것으로 대체할 수 있을 때
- 관련된 제품 객체들이 함께 사용되도록 설계되었고, 이 부분에 대한 제약이 외부에도 지켜지도록 하고 싶을 때
- 제품에 대한 클래스 라이브러리를 제공하고, 그들의 구현이 아닌 인터페이스를 노출시키고 싶을 때
1-3. 장단점
장점 1. 구체적인 클래스 분리 가능
장점 2. 제품군을 쉽게 대체할 수 있음
장점 3. 제품 사이의 일관성 증진
단점 1. 새로운 종류의 제품 제공은 어려움
'etc > design patterns' 카테고리의 다른 글
1-2. 빌더 패턴 (0) | 2021.10.01 |
---|---|
1. 생성패턴 (0) | 2021.09.04 |