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

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

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

 

팩토리 메서드 패턴이란?

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

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

 

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

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

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

 

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

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

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

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

 

구조

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

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

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

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

 

팩토리 메서드 패턴의 장점

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

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

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

 

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

 

 

[참고] GoF의 디자인 패턴


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

,