디자인 패턴
Abstract Factory 패턴
가든_
2022. 9. 12. 01:11
팩토리 패턴과 추상 팩토리 패턴

추상 팩토리 패턴(Abstract Factory Pattern)
❤상세화된 서브클래스를 정의하지 않고 서로 관련성이 있거나 독립적인 여러 객체의 군을 생성하기 위한 인터페이스를 제공하는 패턴
❤팩토리 메서드 패턴을 좀 더 캡슐화한 방식
추상 팩토리 패턴의 사용 이유
❤객체가 생성되거나 구성/표현되는 방식과 무관하게 시스템을 독립적으로 만들고자 할 때 사용한다.
❤여러 제품군 중 하나를 선택해서 시스템을 설정해야하고, 한번 구성한 제품을 다른 것으로 대체하는것이 가능할 때 사용한다.
❤관련된 제품 객체들이 함께 사용되도록 설계되었고, 이 부분에 대한 제약이 외부에서도 지켜지게 하고 싶을때 사용한다.
❤제품에 대한 클래스 라이브러리를 제공하고, 이것의 구현이 아닌 인터페이스만을 노출시키고 싶을 때 사용한다.
장점
- 구체적인 클래스를 사용자로부터 분리한다. (사용자는 인터페이스에 대해서만 알고있으면 됨)
- 제품군을 쉽게 대체할 수 있다.
- 객체 생성 과정에서 일관성이 높아진다.
단점
- 새로운 종류의 제품을 제공하기 어렵다.
구현방식

❤ Abstract Factory : 팩토리 인터페이스로, 만들고자 하는 객체를 생성하는 연산을 정의한다.
❤ Concrete Factory : Abstract Factory 인터페이스를 구현하는 클래스로 구체적인 요소가 들어있다.
❤ Abstract Product : Abstract Product에서 만들려고 했던 그 객체에 대한 인터페이스를 정의한다.
❤ Concrete Product : 팩토리에서 생성할 실제 객체를 정의하고 Abstract Product의 인터페이스를 정의한다.
❤ Client : 생성된 객체를 인터페이스만을 이용해 사용한다.(Abstract Factory와 Abstract Product만을 사용함)