팩토리 메서드 패턴

팩토리 메서드 패턴(Factory Method Pattern)

객체를 생성하는 책임을 서브클래스에게 위임하여, 객체 생성 로직과 객체 사용 로직을 분리하는 패턴

  • 객체 생성을 처리하는 클래스를 팩토리(Factory)라 부름

  • 객체 생성 로직을 한 곳(팩토리 메서드)에서 캡슐화하여 관리하기 용이

  • 제품을 사용하는 코드와, 생성하는 코드가 분리되어 결합도가 낮아짐 (느슨한 결합)

  • 객체를 생성하는 인터페이스는 상위 클래스(Creator)에서 정의하고, 실제로 어떤 구체적인 객체를 만들지는 하위 클래스가 결정하게함

  • 클라이언트는 구체적인 제품 클래스의 이름이나, 생성 방식을 알 필요없이, Creator 인터페이스만 다룸

    • 즉, 클라이언트 코드는 클래스들의 세부 종류 변화에 신경 쓸 필요가 없게됨

  • SOLID 원칙중 OCP(개방-폐쇄 원칙)을 준수한 패턴


1. 제품 인터페이스 정의

팩토리 메서드가 생성할 객체들이 공통적으로 구현해야 할 인터페이스

interface Product {
  create(): void;
}

2. 구체적인 제품 정의

제품 인터페이스를 구현하는 실제 객체

3. 크리에이터 추상 클래스 정의

제품을 생성하는 팩토리 메서드 정의

  • 제품을 사용하는 로직도 포함

4. 구체적인 크리에이터 클래스 정의

크리에이터 추상 클래스를 상속받아 실제로 어떤 제품을 생성할지 결정 및 구현

5. 클라이언트 코드

클라이언트 코드는 상품 종류 변화에 영향을 받지 않는 독립된 요소로 분리될수 있게됨

Last updated