'팩토리 메서드 패턴'에 해당하는 글 2건

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

 

추상 팩토리 패턴이란?

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

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

 

 

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

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

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

 

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

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

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

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

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

 

구조

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

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

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

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

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

 

추상 팩토리 패턴의 장점

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

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

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

 

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

 

 

[참고] GoF의 디자인 패턴


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

,

흔히 팩토리하면 우리는 무언가 기계로 물건들을 계속해서 제조하는 그런 공장을 떠올릴 것이다.

그렇다면 팩토리 메서드 패턴은 우리가 알고있는 공장과 어떤 연관 관계가 있는 것일까?

이제부터 팩토리 메서드 패턴에 대해서 알아보자.

 

팩토리 메서드 패턴이란?

· 객체를 생성하기 위해 인터페이스를 정의하지만, 어떤 클래스의 인스턴스를 생성할지에 대한 결정은 서브클래스가 내리도록 하는 패턴.

※ 가상 생성자(Virtual Constructor) 패턴이라고도 불림.

 

· 서브클래스 중 어느 것을 생성해야 하는지에 대한 정보를 캡슐화하고, 클라이언트 코드와 서브클래스의 코드를 뗴어냄.

· 서브클래스에서 어떤 클래스를 생성할지 오버라이드 한 메서드가 바로 팩토리 메서드.

· 객체를 제조하는 방법을 알기 때문에 팩토리 메서드라고 불림.

 

언제 팩토리 메서드 패턴을 사용해야 할까?

· 어떤 클래스가 자신이 생성해야 하는 객체의 클래스를 예측할 수 없을 때.

· 생성할 객체를 기술하는 책임을 자신의 서브클래스가 지정했으면 할 때.

· 객체 생서으이 책임을 몇 개의 보조 서브클래스 가운데 하나에게 위임하고, 어떤 서브클래스가 위임자인지에 대한 정보를 국소화 시키고 싶을 때.

 

구조

· Product : 팩토리 메서드가 생성하는 객체의 인터페이스를 정의함.

· ConcreteProduct : Product 클래스에 정의된 인터페이스를 실제로 구현함.

· Creator : Product 타입의 객체를 반환한느 팩토리 메서드를 선언함. Creator 클래스는 팩토리 메서드를 기본적으로 구현하는데, 이 구현에서는 ConcreteProduct 객체를 반환함. 또한 Product 객체의 생성을 위해 팩토리 메서드를 호출함.

· ConcreteCreator : 팩토리 메서드를 재정의하여 ConcreteProduct의 인스턴스를 반환함.

 

팩토리 메서드 패턴의 장점

· 팩토리 메서드 패턴은 응용프로그램에 국한된 클래스가 코드에 종속되지 않도록 해줌.

· 서브클래스에 대한 훅(hook) 메서드를 제공.

· 병렬적인 클래스 계통을 연결하는 역할을 담당.

 

[프로그래밍/디자인 패턴] - 추상 팩토리(Abstract Factory) 패턴

 

 

[참고] GoF의 디자인 패턴


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

,