앞서서 팩토리 메서드 패턴을 알아보았았다. 이번에는 추상 팩토리 패턴에 대해서 알아보도록 하자.

 

추상 팩토리 패턴이란?

· 상세화된 서브클래스를 정의하지 않고도 서로 관련성이 있거나 독립적인 여러 객체의 군을 생성하기 위한 인터페이스를 제공하는 패턴.

※ 키트(Kit) 패턴이라고도 불림.

 

 

우리가 편의점에서 자주 사먹는 삼각 김밥을 예를 들어보겠다. 삼각 김밥은 삼각 김밥을 만드는 어느 공장에서 만들어져서 편의점으로 운반되었을 것이다.

하지만 그 삼각 김밥 안에 들어가는 재료인 참치라던가 고기, 야채들은 각각의 참치 공장, 고기 공장, 야채 공장에서 다 손질되어서 삼각 김밥을 만드는 공장으로 운반되었을 것이다.

이와 같은 모양을 추상 팩토리 패턴에 대입해서 생각해보면 될 것 같다.

 

언제 추상 팩토리를 사용해야 할까?

· 객체가 생성되거나 구성 · 표현되는 방식과 무관하게 시스템을 독립적으로 만들고자 할 때.

· 여러 제품군 중 하나를 선택해서 시스템을 설정해야 하고 한번 구성한 제품을 다른 것으로 대체할 수 있을 때.

· 관련된 제품 객체들이 함께 사용되도록 설계되었고, 이 부분에 대한 제약이 외부에도 지켜지도록 하고 싶을 때.

· 제품에 대한 클래스 라이브러리를 제공하고, 그들의 구현이 아닌 인터페이스를 노출시키고 싶을 때.

 

구조

· AbstractFactory : 개념적 제품에 대한 객체를 생성하는 연산으로 인터페이스를 정의함.

· ConcreteFactory : 구체적인 제품에 대한 객체를 생성하는 연산을 구현함.

· AbstractProduct : 개념적 제품 객체에 대한 인터페이스를 정의함.

· ConcreteProduct : 구체적으로 팩토리가 생성할 객체를 정의하고, AbstractProduct가 정의하는 인터페이스를 구현함.

· Client : AbsctractFactory와 AbstractProduct 클래스에 선언된 인터페이스를 사용함.

 

추상 팩토리 패턴의 장점

· 구체적인 클래스가 사용자에게 분리되어 사용자 코드에는 나타나지 않음.

· 제품군을 쉽게 대체할 수 있도록 함.

· 제품 사이의 일관성을 증진시킴.

 

[프로그래밍/디자인 패턴] - 팩토리 메서드(Factory Method) 패턴

 

 

[참고] GoF의 디자인 패턴


WRITTEN BY
김치치즈스마일
세계정복!

,