factory method pattern vs abstract factory pattern 차이 알아보기
두 패턴은 공통점이 많지만 확연히 다른 차이점이 존재합니다.
펙토리 메서드 패턴과 추상 메서드 패턴의 차이에 대하여 알아보도록 하겠습니다.
팩토리 메서드 패턴과 추상 팩토리 패턴의 공통점
- Template Method Pattern을 사용
- Factory 클래스를 사용하여 생성
- Factory Method Pattern을 사용
- 둘 다 추상 클래스와 Factory를 통해 실제 구현 대상인 Concrete(구상 클래스, 구체 클래스)와 Client 간 결합도를 낮춥니다
- 인자에 따라 생성되는 객체가 결정됩니다.
- 추상 팩토리 패턴은 Factory Method Pattern을 사용합니다. 그리고 팩토리 메서드 패턴의 단점을 보완합니다.
- 둘 다 추상 클래스와 Factory를 통해 실제 구현 대상인 Concrete(구상 클래스, 구체 클래스)와 Client 간 결합도를 낮춥니다
- 객체 생성을 캡슐화
- 구상 클래스가 아닌, 추상 클래스와 인터페이스에 맞춰 코딩이 가능함
팩토리 메소드 패턴과 추상 팩토리 패턴의 차이점
- Factory 클래스에서 객체에 대한 생성을 지원하는 범위
- 팩토리 메소드 패턴
- 한 팩토리당 한 종류 ( create 메서드가 Factory 클래스에 1개)
- 한 개의 메서드로 여러 개의 객체를 만듦
- 추상 팩토리 패턴
- 한 팩토리에서 서로 연관된 여러 종류 모두 지원( create() 메서드가 팩토리 클래스에 여러 개)
- 구상 클래스에 의존하지 않고 여러 개의 관련된 객체를 하나의 팩토리로 묶음
- 팩토리 메소드 패턴
- 팩토리 메서드에서 만드는 객체의 종류
- 팩토리 메소드 패턴의 팩토리 메소드
- 인자에 따라 객체의 종류가 결정됨
- 추상 팩토리 패턴 패턴의 팩토리 메서드
- 인자에 따라 관련된 객체들을 생성하는 팩토리의 종류가 결정됨
- 팩토리 메소드 패턴의 팩토리 메소드
- 결합도를 낮추는 대상
- 팩토리 메서드 패턴
- ConcreteProduct와 Client 간의 결합도를 낮출때 사용
- 추상 팩토리 패턴
- ConcreteFactory와 Client간의 결합도를 낮출 때 사용
- 팩토리 메서드 패턴
- 포커스
- 팩토리 메서드 패턴
- 메서드(Factory Method) 레벨에서 포커스를 맞춤
- 클라이언트의 ConcreteProduct 인스턴스 생성 및 구성에 대한 책임을 덜어줌
- 추상 팩토리 패턴
- 클래스(Abstract Factory) 레벨에서 포커스를 맞춤
- 각 Product들이 다른 클래스와 함께 사용될 때의 제약사항을 강제할 수 있다.
- 단, 새로운 ConcreteFactory를 추가할 때 많은 작업이 필요하다.
- 팩토리 메서드 패턴
- 메서드와 오브젝트
- 팩토리 메서드는 단일 Method이다
- 추상 팩토리는 Object이다. (팩토리 오브젝트 생성)
- Inhritance(상속), Composition(구성)
- 팩토리 메서드 패턴
- 상속을 사용하여 객체의 인스턴스 생성에 대해서는 서브클래스에 의존
- 지역 레퍼런스 없이 바로 하위 클래스의 함수를 호출하여 객체를 만듦
- 추상 팩토리 패턴
- 지역 레퍼런스를 두어 , 외부로부터 Factory 객체를 DI 받아서 위임.
- 팩토리 메서드 패턴
'DesignPattern' 카테고리의 다른 글
[Design Pattern] Adapter Pattern (4) | 2019.10.07 |
---|---|
[Design Pattern] Prototype pattern (2) | 2019.09.27 |
[Design Pattern] template method pattern (4) | 2019.09.18 |
[Design Pattern] Factory Method Pattern (4) | 2019.09.18 |
[Design Pattern] abstract factory pattern (5) | 2019.09.17 |
댓글