Factory Pattern

팩토리 메서드 패턴을 사용하는 이유

  • loose coupling, encapsulation

  • Factory

    • Factory Method

    • Simple Factory Method

    • Abstract Factory Method

  • 객체의 생성에 대한 책임을 갖는다.

객체지향 설계 원칙에 관련된 Factory

  • 객체지향 원칙

    • 단일 책임 원칙(Single Responsibility Principle, SRP)

    • 개방-폐쇄 원칙(Open-Close Principle)

    • 의존관계 역전 원칙(Dependency Inversion Principle)

OCP

  • 확장에 열려 있고 변경에 닫혀 있어야 한다는 원칙에 따라 팩토리 클래스는 특정 타입에 따라 객체를 생성한다.

DIP

  • 구체화 클래스에 의존하지 않고 추상 클래스나 인터페이스와 협력해야 한다.

  • 팩토리 클래스를 통해 구체화 클래스에 대한 정보를 캡슐화하고 생성을 할 수 있다.

SRP

  • SimpleFactory 는 의존하는 구체 클래스에 대해 결합도가 높다.

  • 변하는 요구사항에 따라 지속적으로 추가 될 수 밖에 없다.

  • 지속적인 문제에 따라 개선을 위해서는 Abstract Factory Pattern이 필요하다.

Abstract Factory Pattern

  • SimpleFactory 의 문제점을 해결할 수 있는 방법

  • 팩토리에서 생성에 대한 책임을 갖고 있는 클래스를 두고, 하위 메서드를 통해 적합한 객체를 생성하도록 하는 방법

Factory Pattern 맞아?

  • DIP 원칙을 엄격하게 따르면 코드 내의 팩토리 클래스를 제외하고 new 키워드를 사용하면 안된다.

    • 점차 확장할 가능성이 있는 단계인 경우 팩토리로 인하여 설계의 확장이 어려워진다.

    • 팩토리를 사용하기 위해서는 클래스를 많이 만들어야 한다.

    • 팩토리 메서드 패턴의 경우 구현 상속을 강제하기 때문에 유지 보수에 문제가 있을 수 있다.

예시 코드

  • Simple Factory

  • Abstract Factory

Last updated