디자인 패턴/Java언어로 배우는 디자인패턴 입문 책 정리
Prototpye 패턴
이쌤인생
2021. 1. 3. 19:16
객체를 new가 아닌 clone을 이용해 복사해오는 패턴
1. 코드
MessageBox : 복제할 class
public class MessageBox implements Cloneable{
private char decochar;
public MessageBox(char decochar) {
this.decochar = decochar;
}
public void use(String s) {
System.out.println(decochar + s + decochar);
}
public MessageBox createClone() {
MessageBox result = null;;
try {
result = (MessageBox)clone();
} catch (CloneNotSupportedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return result;
}
}
Main : test 클래스
public class Main {
public static void main(String[] args) {
MessageBox starBox = new MessageBox('*');
MessageBox copyBox = starBox.createClone();
copyBox.use("test");
}
}
2. 특징
- new로 객체를 생성하는게 아닌 미리 만든 클래스를 clone해서 만듬
- Cloneable을 상속하여 clone 사용
3. 해당 패턴을 고려해볼만한 상황
- 종류가 많아서 모두 클래스로 만들기 힘든 경우
- 생성자가 엄청 복잡하고 이 생성자를 많이 사용해야 하는 경우
- clone이 필요한 경우