디자인 패턴 : 추상 팩토리
정의
객체 생성과 구성(협력관계)을 추상화 시킨 패턴으로 서버 코드와 클라이언트 코드의 결합도를 낮춘 디자인 패턴
클라이언트 코드에서는 구현체가 아닌 인터페이스에 의존한다.
특징
- 클라이언트는 추상화 레이어에 의존하기 때문에
- 구현체와의 결합도가 낮아진다.
- 구현체를 교체하는 비용이 낮아진다.
- 대부분의 행위가 동적 바인딩으로 이루어지기 때문에 정적인 코드만으로는 내부적으로 어떻게 동작하는지 추적하기가 힘들다.
- 구현체의 응집도가 높아진다.
- 구현체의 생명주기가 팩토리 생성자에 의해 제어된다.
- 구현체 사이의 일관성이 높다.
- 추상 팩토리에 대한 의존성으로 인하여 확장에 패널티를 갖는다.
- 표준화 인터페이스를 공유하는 특화 모듈을 구현할 때 마다, 추상 팩토리에서 요구하는 스펙을 모두 구현해야 한다.
- 스펙 복잡도가 올라갈 수록, 모듈 추가비용이 상승한다.
- 새로운 기능을 추가하려면, 기존에 구현된 특화 모듈에도 새로운 기능을 구현하는 과정이 요구된다.
구조
- 추상화 레이어 (표준 인터페이스)
- 추상 팩토리 레이어
- 인터페이스 레이어
- 구체 레이어 (특화 모듈)
- 구체 팩토리 레이어 (모듈 생성 제어)
- 인터페이스 구현 레이어 (모듈)
예제코드
예제코드 클래스 다이어그램
관련 패턴
- 팩토리 메소드 패턴
- 싱글톤 패턴
- 프로로타입 패턴
참고자료
GoF의 디자인 패턴 p132 - p143
태그: 디자인 패턴
Back to Top ↑
댓글남기기