JAVA

[디자인패턴] Prototype - 복사해서 인스턴스 만들기

gom1n 2022. 3. 31. 13:06

6-1) 예제 프로그램에서는 MessageBox 클래스와 UnderlinePen 클래스에 같은 동작을 하는 createClone 메소드가 정의되어 있습니다. 같은 동작을 하는 메소드가 하나의 프로그램에 복수로 정의되어 있는 것은 관리상 권장할 만한 것이 아니므로 이 메소드를 공유하고 싶다고 합시다. 어떻게 하면 될까요?

 

크게 두가지 방법이 있다.

1. Template Method 패턴

Product 인터페이스를 Product 클래스로 해서, createClone 메소드를 Product 클래스 내부에서 구현한다.

 

2. UnderlinePen 클래스와 MessageBox 클래스 공통의 상위 클래스로 ConcreteProduct 클래스를 정의

-> ConcreteProduct 클래스는 Product 인터페이스를 구현하도록 해서 그 내부에서 createClone 메소드를 구현한다.

 


 

6-2) java.lang.Object 클래스는 clone 메소드를 가지고 있습니다. java.lang.Object는 java.lang.Cloneable 인터페이스를 구현하고 있습니까?

아니다.

만약 java.lang.Object가 java.lang.Cloneable 인터페이스를 구현한다면, 어떤 클래스에서 clone을 호출해도 CloneNotSupportedException은 제공되지 않는다.