본문 바로가기

디자인 패턴/Java언어로 배우는 디자인패턴 입문 책 정리

Prototpye 패턴

객체를 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