추상 팩토리 패턴

주짱·2022년 6월 7일
0

디자인 패턴

목록 보기
3/4
post-thumbnail

🔶개념

Factory of Factories

👉 서로 관련이 있는 객체들을 통째로 묶어서 팩토리 클래스로 만들고, 이들 팩토리를 조건에 따라 생성하도록 다시 팩토리를 만들어서 객체를 생성하는 패턴을 말한다. 즉, 다양한 구성 요소 별로 '객체의 집합'을 생성해야 할 때 유용하다. 이를 사용하여 상황에 알맞은 객체를 생성할 수 있다.

대표적인 예로, 자바 프로그래밍 언어의 GUI 구성 요소인 AWT/Swing 라이브러리의 룩 앤드 필 변경 기능을 들 수 있다. 메탈, 마이크로소프트 윈도우, 맥 OS 등의 모양으로 변경할 수 있다. 이에 따라 추상 팩토리에 있는 기본 팩토리 객체가 변경된다. 그러면 이후로 생성되는 GUI 객체들은 전부 해당 룩앤필에 따른다.


🔶구성요소

구성요소역할
AbstractFactory팩토리의 공통 인터페이스를 정의
각 product를 생성하는 기능을 추상 메소드로 선언
ConcreteFactoryAbstractFactory 공통 인터페이스 구현
AbstractFactory 클래스의 추상 메소드를 구현함으로써 구체적인 제품 생성
AbstractProductProduct의 공통 인터페이스 정의
ConcreteProductAbstractProduct 공통 인터페이스 구현
ConcreteFactory 클래스에서 생성되는 구체적인 제품
ClientAbstractFactory와 AbstractProduct의 공통 인터페이스만 사용해서 일을 수행

🔶사용배경

추상 팩토리 패턴은 다음과 같은 상황일 때 사용하면 효과적이다.

  1. 시스템과 객체를 생성하는 방식을 분리하고자 할 때

  2. 여러 제품군 중 하나를 선택해서 시스템을 설정해야 하고, 다른 제품군으로 대체 가능할 때

  3. 관련된 제품 객체들을 함께 사용하도록 설계했고, 이 제약이 외부에도 지켜지도록 하고 싶을 때

  4. 제품에 대한 클래스 라이브러리를 제공하고, 구현부는 숨기고 인터페이스를 노출시키고 싶을 때


🔶장점

  • 구현(Implements)보다 인터페이스(Interface)를 위한 코드 접근법을 제공한다.

  • 추후에 sub class를 확장하는 데 있어 굉장히 쉽게할 수 있다.

  • 팩토리 패턴(팩토리 메소드 패턴)의 조건문(if-else, switch 등)으로부터 벗어난다.


🔶단점

  • 새로운 종류의 제품을 추가될 때는 추상 팩토리와 모든 서브 클래스의 변경을 의미하므로 힘들다.
profile
개발의, 개발에 의한, 개발을 위한 ✍

0개의 댓글