객체를 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이 필요한 경우
'디자인 패턴 > Java언어로 배우는 디자인패턴 입문 책 정리' 카테고리의 다른 글
Abstract Factory 패턴 (0) | 2021.01.16 |
---|---|
Builder 패턴 (0) | 2021.01.09 |
Singleton 패턴 (0) | 2021.01.01 |
Factory Method 패턴 (410) | 2020.12.31 |
Template Method 패턴 (1) | 2020.12.27 |