본문 바로가기
DesignPattern

factory method pattern vs abstract factory pattern 차이 알아보기

by 봄석 2019. 9. 18.

factory method pattern vs abstract factory pattern 차이 알아보기

 

 

두 패턴은 공통점이 많지만 확연히 다른 차이점이 존재합니다.

펙토리 메서드 패턴과 추상 메서드 패턴의 차이에 대하여 알아보도록 하겠습니다.

 

 

 

 

팩토리 메서드 패턴과 추상 팩토리 패턴의 공통점

  1. Template Method Pattern을 사용
  2. Factory  클래스를 사용하여 생성
  3. Factory Method Pattern을 사용
    • 둘 다 추상 클래스와 Factory를 통해 실제 구현 대상인 Concrete(구상 클래스, 구체 클래스)와 Client 간 결합도를 낮춥니다
      • 인자에 따라 생성되는 객체가 결정됩니다.
    • 추상 팩토리 패턴은 Factory Method Pattern을 사용합니다. 그리고 팩토리 메서드 패턴의 단점을 보완합니다.
  4. 객체 생성을 캡슐화
  5. 구상 클래스가 아닌추상 클래스와 인터페이스에 맞춰 코딩이 가능함

 

팩토리 메소드 패턴과 추상 팩토리 패턴의 차이점

  1. Factory 클래스에서 객체에 대한 생성을 지원하는 범위
    • 팩토리 메소드 패턴 
      • 한 팩토리당 한 종류 ( create 메서드가 Factory 클래스에 1개)
      • 한 개의 메서드로 여러 개의 객체를 만듦
    • 추상 팩토리 패턴 
      • 한 팩토리에서 서로 연관된 여러 종류 모두 지원( create() 메서드가 팩토리 클래스에 여러 개)
      • 구상 클래스에 의존하지 않고 여러 개의 관련된 객체를 하나의 팩토리로 묶음
  2. 팩토리 메서드에서 만드는 객체의 종류
    • 팩토리 메소드 패턴의 팩토리 메소드
      • 인자에 따라 객체의 종류가 결정됨
    • 추상 팩토리 패턴 패턴의 팩토리 메서드
      • 인자에 따라 관련된 객체들을 생성하는 팩토리의 종류가 결정됨
  3. 결합도를 낮추는 대상
    • 팩토리 메서드 패턴 
      • ConcreteProduct와  Client 간의 결합도를 낮출때 사용
    • 추상 팩토리 패턴
      • ConcreteFactory와 Client간의 결합도를 낮출 때 사용
  4. 포커스
    • 팩토리 메서드 패턴
      • 메서드(Factory Method) 레벨에서 포커스를 맞춤
      • 클라이언트의 ConcreteProduct 인스턴스 생성 및 구성에 대한 책임을 덜어줌
    • 추상 팩토리 패턴
      • 클래스(Abstract Factory) 레벨에서 포커스를 맞춤
      • 각 Product들이 다른 클래스와 함께 사용될 때의 제약사항을 강제할 수 있다.
      • 단, 새로운 ConcreteFactory를 추가할 때 많은 작업이 필요하다.
  5. 메서드와 오브젝트
    • 팩토리 메서드는 단일 Method이다
    • 추상 팩토리는 Object이다. (팩토리 오브젝트 생성)
  6. Inhritance(상속), Composition(구성)
    • 팩토리 메서드 패턴
      • 상속을 사용하여 객체의 인스턴스 생성에 대해서는 서브클래스에 의존
      • 지역 레퍼런스 없이 바로 하위 클래스의 함수를 호출하여 객체를 만듦
    • 추상 팩토리 패턴
      • 지역 레퍼런스를 두어 , 외부로부터 Factory 객체를 DI 받아서 위임.

 

 

댓글