최상단 광고

2012년 4월 17일 화요일

[Chapter 7] 생성패턴 총 정리

▶ 시스템이 생성하는 객체의 클래스로 시스템을 매개변수화하는 일반적인 방법은 두가지가 있습니다.
1) 객체를 생성하는 클래스를 상속해서 서브클래스를 만드는 방법   <팩토리 메서드>
2) 객체 합성으로 시스템을 매개변수화하는 방법                          <추상 팩토리, 빌더, 원형 패턴>
-> 제품 객체를 생성하는 책임을 갖고 있는 새로운 "팩토리 객체"를 만듭니다.

▶ "그리기 편집기 프레임워크" 를 통해 알아보자.
그리기 편집기 프레임워크는 GraphicTool이 제품 클래스로 매개변수화되는 다양한 방법을 보여준다.

>> 팩토리 메서드를 적용하여, 팔레트에 Graphic의 서브클래스 각각에 대해 GraphicTool의 서브클래스를 생성합니다. GraphicTool은 NewGraphic() 연산은 갖는데, 이 연산은 각 GraphicTool 서브클래스가 재정의합니다.
>> 추상 팩토리 패턴을 적용한 결과, 여러 GraphicFactory의 클래스 계통이 만들어집니다. 클래스 계통은 Graphic 서브클래스 별로 한 개씩입니다. 이때, 각 팩토리는 단지 하나의 제품만을 생성합니다. 예) CircleFactory는 circle, LinFactory는 line을...
>> 원형 패턴을 적용하면 각 Graphic의 서브클래스가 Clone() 연산을 구현하며, GraphicTool은 그것이 생성하는 Graphic의 원형으로 매개변수화 됩니다.


▶ 정리하기
: 팩토리 메서드는 설계를 사용자가 입맛에 맞게 고칠 수 있도록 해 주면서 그 설계가 복잡해지지 않게 합니다. 다른 디자인 패턴은 새로운 클래스가 필요한 반면, 팩토리 메서드 패턴에서는 새로운 연산만 정의하면 됩니다. 개발자들은 객체를 생성하는 표준 방식으로 팩토리 메서드를 자주 사용하고는 합니다. 그러나 인스턴스화 할 클래스가 변하지 않거나 초기화 연산처럼 서브클래스들이 쉽게 재정의 할 수 있는 연산에서 인스턴스화가 된다면 상속으로도 쉽게 해결할 수 있으므로 이때는 꼭 팩토리 메서드를 사용할  필요는 없습니다.
: 추상 팩토리, 원형 또는 빌더 패턴을 사용하는 설계는 팩토리 메서드를 사용하는 설계보다 더 유연할 때가 많습니다. 팩토리 매서드를 사용해서 시작한 설계에 좀 더 유연성을 부가 할 필요가 있다면 다른 생성 패턴을 사용하는 설계로 진화합니다.

댓글 없음: