티스토리 뷰

1. 팩토리 메서드 패턴이란?

팩토리 메서드 패턴에서는 객체를 생성하기 위한 인터체이스를 정의한다.
어떤 클래스의 인스턴스를 만들지는 어느 서브클래스에서 결정하게 만든다.

팩토리 메서드 패턴을 이요하면 클래스의 인스턴스를 만드는 일을 서브클래스에게 맡기는 것이다.

-> 구체적으로 어떤 것 (객체의 생성)을 만들지는 서브 클래스가 정한다.

구성요소

1) Product

- 팩토리 메서드가 생성할 객체의 인터페이스를 정의한다.

2) Creator

- 팩토리 메서드를 정의하고, 이 팩토리 메서드는 Product 타입의 객체를 리턴한다.
- 구현은 ConcreteCreator에서 하지만, 디폴트 팩토리 메서드를 구현할 수도 있다.

3) ConcreteProduct

- Product 인터페이스를 구현한다.

4) ConcreteCreator

- Creator에 정의된 팩토리 메서드를 override하여 구현한다.

 

기본이 되는 디자인 원칙

1) OCP

 

2. 동기

객체 생성을 미루고 싶을 때 사용한다.

- 클래스가 어떤 어떤 객체를 생성해야될지 모를 때

- 클래스가 자신의 서브클래스에게 세부 객체 생성 작업을 넘기고 싶을 때 

 

장점

1) 객체 생성 부분이 분리된다.

2) 서브 클래스가 사용할 수 있는 "hook" 이 생긴다.

- Creator 클래스에 있는 팩토리 메서드 -> createProduct() 를 오버라이드 해서 커스터마이징 된 행동을 할 수 있다.
- 즉, 부모클래스의 구현을 변경하지 않고 공통적인 인터페이스를 지키면서 자신의 프로세스만 변경할 수 있는 것을 hook이라고 한다. 

 

단점

1) 클래스가 늘어나면서 구조적 복잡도가 늘어난다.

2) 서브클래스에 대한 의존성이 생긴다.

- 만약 Product 클래스에 변경이 생기면 팩토리 메서드가 들어있는 Creator에서 또 변경이 필요할 수 있다.

 

3. 개인적인 포인트

1) 일하면서 많이 봐온 패턴. (BeanFactory..)