Creational Pattern 중 Prototype
Prototype Pattern은 Class의 정의로부터 인스턴스를 생성하는 것이 아니라, 사용중인 Instance로부터 그것의 복제본을 생성하여 사용하는 것이다.

prototype pattern의 경우, 자신이 가진 member variable 값들을 새로운 instance에 복사하고, 그 인스턴스를 return하는 메소드를 구현하게 된다.(일반적으로 copy()라는 이름으로...)


public class MyPrototype{
private MyType mVariable;
...
public MyPrototype copy(){
   MyPrototype item = new MyPrototype();
   item.mVariable = this.mVariable;
   ...
   return item;
}
...
}



Class가 아닌 Instance로부터 Instance를 생성할 때 얻을 수 있는 이점은, 초기화를 다시 할 필요가 없다는 것이다.
물론 Class의 생성자에서 Instance의 초기화를 할 수도 있겠지만,
Instance를 생성하여 초기화 한 후, 이를 복제하여 사용하는 것은, 생성자에서 초기화 하는 것보다 Runtime에서의 유연성을 높여준다는 장점이 있다.



이 pattern을 사용할 때 주의할 점은,
맴버변수가 어떤 클레스에 대한 instance라면, item.mValue = this.mValue;로 할 경우 Reference가 복사되기때문에,
item.mValue = new MyType(this.mValue); 와 같이, 동일한 값을 가지는 새로운 instance를 생성해 주어야 한다는 것이다.



Prototype Pattern은 특정 작업을 할 때 사용되는 Method나 Rule을 Run-time에 설정하고,
규칙이 사용되는 instance를 생성할 때 적용될 수 있을 것이다.
by 나무귀신 | 2006/02/23 01:45 | Design Pattern | 트랙백 | 덧글(0)
트랙백 주소 : http://schoolor.egloos.com/tb/1491653
☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]

:         :

:

비공개 덧글



< 이전페이지 다음페이지 >