1.UML

Untitled

Prototype을 상속받아 clone()메소드를 구현하는 ConcretePrototype으로 구성되어 있다.

원형을 하나 가지고 있고, 원형의 Prototype을 상속받아 clone() 메소드를 구현한 상태라면 Client에서 원할 때 원형으로 클론을 만들어 사용할 수 있다.

2. 왜 사용하나?

사실 인스턴스를 만드는 방법은 익히 알고 있듯이 new Somthing(), Instance을 이용하여 인스턴스를 만들면 그만이다. 그런데 왜 Prototype 패턴이라는 것 만들어서 사용해야 하는지 궁금할 수 있다.

prototype pattern은 object 생성에 높은 비용이 드는데 수 많은 생성 요청을 하는 경우, 또는 비슷한 object를 지속적으로 생성해야 할 때 유용하게 사용할 수 있다. prototype pattern은 본래의 object로부터 새로운 object를 만들어내며(서로 다른 인스턴스), 각 객체에 따라 데이터 수정이 가능한 메커니즘을 제공한다.

이 패턴의 키워드는 ‘동적 클래스 생성’ 이다.

약간의 설정변경으로 비슷하지만 다른 클래스로의 확장이 가능한 경우, 세부 클래스를 미리 명세하지 않고 런타임에 원형을 복제해서 그 복사본을 수정함으로써 ‘동적 클래스 생성’을 가능케하는 패턴이 원형(Prototype) 패턴이다.

코드링크

애초에 Unity 는 이러한 프로토타입 패턴을 Prefab으로 적용시켰다.

코드링크2