본문 바로가기

💻 개발IT/Design Patterns

4. Creational 패턴 - Prototype Pattern

Prototype Pattern

목적

  • 복제를 통해 기존 Object의 템플릿을 기반으로 Object 생성

사용하는 경우

  • Object의 구성, 생성 및 표현은 시스템과 분리되어야 하는 경우
  • 생성할 클래스는 런타임에 지정될 경우
  • 다른 object와 object 집합과 동일하거나 유사한 것이 필요할 경우
    (각 object의 초기 생성 비용은 큼)

class diagram

  • Prototype : 복제를 위한 interface 정의
  • ConcreteProduct : 자신을 복제할 수 있는 Object
  • Client : 복제 request

class diagram (shallow, deep)

sequence diagram

특징

  • Prototype을 공급하고 런타임에 변경(추가, 제거)할 수 있음 -> 런타임에 큰 유연성 제공

vs. Factory Pattern

Abstract Factory Class는 Factory와 함께 구현 되는 경우가 많은데 Prototype으로도 구현 가능

  • Prototype은 delegate를 통해 생성, Factory는 상속을 통해 생성

 

예시 1 - Shallow (Java cloneable interface 이용)

 

예시 2 - Deep (Java cloneable interface 이용)

 

예시 3 - Deep (Java cloneable interface 이용 X)

 

예시 4

모든 graphic obejct는 복제될 수 있음

  • Graphic : ConcreteProduct 이거나 Composite entity 일 수 있음. 
반응형