2016년 2월 24일 수요일

GoF의 디자인 패턴 - Prototype

Creational Patterns(생성 패턴) :: Prototype(원형)

구분
 객체 생성 (Object Creational)

의도
 - 원형이 되는 인스턴스를 사용하여 생성할 객체의 종류를 명시하고, 이렇게 만든 견본을 복사해서 새로운 객체를 생성한다.

사용시기
 - 인수턴스할 클래스를 런타임에 지정할 때
 - 제품 클래스 계통과 병렬적으로 만드는 팩토리 클래스를 피하고 싶을 때
 - 클래스의 인스턴스들이 서로 다른 상태의 조합 중에 어느 하나일 때
 - 미리 원형으로 초기화해 두고, 나중에 이를 복제해서 사용하는 것이 매번 필요한 상태 조합의 값들을 수동적으로 초기화하는 것보다 더 편리하다.

장점과 단점
 1. 런타임에 새로운 제품을 추가하고 삭제할 수 있다.
 2. 값들을 다양화함으로써 새로운 객체를 명세한다.
 3. 구조를 다양화함으로써 새로운 객체를 명세할 수 있다.
 4. 서브클래스의 수를 줄일 수 있다.
 5. 클래스에 따라 동적으로 응용프로그램을 설정할 수 있다.

구현의 유의점
 1. 원형 관리자를 사용한다.
 2. Clone() 연산을 구현한다.
 3. Clone() 을 초기화한다.


관련 패턴
 Composition, Decorator 패턴에서 Prototype패턴을 쓰는 것을 추천함



참조문헌
- GoF의 디자인패턴

댓글 없음:

댓글 쓰기