-
[GoF] 추상 팩토리 , Abstract FactoryGof Design Pattern 2021. 9. 6. 16:27
추상 팩토리 , Abstract Factory
추상 팩토리 패턴이란?
서로 연관이 있는 객체들을 묶어서 팩토리 클래스로 만들고, 이를 팩토리 조건에 따라 생성하도록 다시 팩토리를 만들어서 객체를 생성하는 패턴. 즉, 여러 제품군을 한꺼번에 생성하는 패턴이다.
추상 팩토리 패턴 왜 사용할까?
구체적인 클래스를 생성하지 않고도 서로 연관된 여러 객체의 군(cluster)를 생성하기 위한 인터페이스를 제공하기 위해 사용합니다. 예를 들어 DB 종류에 따라 DAO 클래스가 달라져야 한다고 할 때, 현재 사용해야 하는 DB의 종류에 따라 DAO 인스턴스를 한꺼번에 생성하도록 할 수 있습니다.
객체가 생성되고 구성되고 표현되는 방식과 상관 없이 시스템을 독립적으로 만들 수 있습니다.
하나 이상의 제품군들 중 하나를 선택하여 시스템을 설정해야 하고 한번 구성한 제품을 대체할 수 있습니다.
추상 팩토리 패턴을 사용하게 되면
- ConcreteFactory 팩토리 클래스의 인스턴스는 실행 시 생성된다.
- ConcreteFactory 클래스는 특정 구현을 갖는 제품 객체를 생성합니다. 즉, 서로 다른 제품 객체를 생성하기 위해서 사용자는 서로 다른 ConcreteFactory 클래스를 구현해야 합니다.
- AbstractFactory는 ConcreteFactory 자식 클래스를 통해 객체 생성을 위임한다.
클래스 다이어그램
객체 협력
- AbstractFactory 개념적 제품에 대한 객체를 생성하는 오퍼레이션 인터페이스를 정의한다
- ConcreteFactory 구체적인 제품에 대한 객체를 생성하는 오퍼레이션을 구현한다.
- AbstractProduct 개념적 제품 객체에 대한 인터페이스를 정의한다.
- ConcreteProduct 구체적으로 팩토리가 생성할 객체를 정의하고, AbstractProduct 가 정의하고 있는 인터페이스를 구현한다.
- Client AbstractFactory 와 AbstractProduct 클래스에 선언된 인터페이스를 사용한다.
코드보기 Click!
코드가 쪼끔 길다. 그래서 Git 커밋 링크로 대체한다!
'Gof Design Pattern' 카테고리의 다른 글
[GoF] 팩토리 메서드 패턴(Factory Method Pattern) (0) 2021.12.05 [ GoF] 템플릿 메서드 패턴(Template Method Pattern) (0) 2021.12.04 [GoF] 빌더 패턴(Builder Pattern) (0) 2021.12.03 [GoF] 프로토타입 패턴, Prototype pattern (0) 2021.09.03 [GoF] 싱글톤 패턴, Singleton pattern (0) 2021.09.02