prototype 패턴은 인스턴스를 new를 사용하지 않고 복사해서(생성해) 사용할 때 쓰는 패턴입니다.
복사 생성자를 이용해 인스턴스 복사
public class MessageBox implements Product1 { //MessageBox = ConcretePrototype, Product1 = Prototype
private char decochar;
public MessageBox(char decochar) {
this.decochar = decochar;
}
public MessageBox(MessageBox prototype){
this.decochar = prototype.decochar;
}
@Override
public void use(String s) {
int decolen = 1 + s.length() + 1;
for (int i = 0; i < decolen; i++) {
System.out.println(decochar);
}
System.out.println();
}
@Override
public Product1 createCopy() {
return new MessageBox(this);
}
}
MessageBox m1 = new MessageBox('*');
m1.createCopy();