Skip to content

Latest commit

 

History

History
27 lines (18 loc) · 2.68 KB

factory_method.md

File metadata and controls

27 lines (18 loc) · 2.68 KB

팩토리 메서드 패턴

Factory Method Pattern

팩토리 메서드 패턴은 객체 생성을 공장(Factory) 클래스로 캡슐화 처리해 대신 생성하게 하는 디자인 패턴이다.

즉, 클라이언트에서 직접 new 연산자를 통해 제품 객체를 생성하는 것이 아닌, 제품 객체들을 도맡아 생성하는 공장 클래스르 만들고, 이를 상속하는 서브 공장 클래스의 메서드에서 여러가지 제품 객체 생성을 각각 책임지는 것이다.

또한 객체 생성에 필요한 과정을 템플릿 처럼 미리 구성해놓고, 객체 생성에 관한 전처리나 후처리를 통해 생성 과정을 다양하게 처리해 객체를 유연하게 정할 수 있는 특징도 있다.

팩토리 메서드 패턴 구조

  • Creator
    • 최상위 공장 클래스로서, 팩토리 메서드를 추상화하여 서브 클래스로 하여금 구현하도록 한다.
    • 객체 생성 처리 메서드: 객체 생성에 관한 전처리, 후처리를 템플릿화한 메소드
    • 팩토리 메서드: 서브 공장 클래스에서 재정의할 객체 생성 추상 메서드
  • ConcreateCreator: 각 서브 공장 클래스들은 이에 맞는 제품 객체를 반환하도록 생성 추상 메소드를 재정의한다. 즉, 제품 객체 하나당 그에 걸맞는 생성 공장 객체가 위치된다.
  • Product: 제품 구현체를 추상화
  • ConcreateProduct: 제품 구현체

정리하자면, 팩토리 메서드 패턴은 객체를 만들어내는 공장을 만드는 패턴이라고 보면 된다. 그리고 어떤 클래스의 인스턴스를 만들지는 미리 정의한 공장 서브 클래스에서 결정한다.

겨우 객체 생성가지고 이런식으로 번거롭게 구성하는 이유는 객체간의 결합도가 낮아지고 유지보수에 용이해지기 때문이다.

템플릿 메서드 패턴과 팩토리 메서드 패턴의 관계

이름 구성이 비슷해서 어떠한 관계가 있을거라고 생각되는데, 템플릿 메서드는 행동 패턴이고 팩토리 메서드는 생성 패턴이라 둘은 전혀 다른 패턴이다. 다만 클래스 구조의 결은 둘이 같다고 보면 되는데, 인스턴스를 생성하는 공장을 Template Method 패턴으로 구성한 것이 Factory Method 패턴이 되기 때문이다. Template Method 패턴에서는 하위 클래스에서 구체적인 처리 알고리즘의 내용을 만들도록 추상 메소드를 상속 시켰었다. 이 로직을 알고리즘 내용이 아닌 인스턴스 생성에 적용한 것이 Factory Method 패턴인 것이다.