프로그래밍/디자인패턴

02. Prototype 패턴

panpro 2017. 3. 21. 02:48


정의 
prototype 패턴은 한 클래스 인스턴스의 내용을 복사해서 다른 내용을 더 채워나가는 식으로 사용하는 디자인패턴입니다. 

보통 인스턴스를 만들 때 클래스로부터 생성하지만, 
prototype 패턴에서는 인스턴스로부터 동일한 인스턴스를 생성합니다. 

A a = new A(); (X)
A a = prototype.clone(); (O)



설명
prototype 패턴은 인스턴스 생성시, 기존에 있던 다른 인스턴스의 내용을 그대로 복사해와 초기값으로 사용하면서 생성되는 디자인 패턴입니다. 

그래서 클래스를 설계할 때 내용이 복사되기 위한 기본적인 것들을 미리 정해 놓고 복사를 염두에 두고 설계합니다. 

예를 들어 전쟁 게임 프로그램에서 병사 인스턴스를 하나 만들어 놓고,
새로운 병사 인스턴스를 만들 때는 그 인스턴스를 복사해 군번만 수정하는 식으로 사용할 수 있습니다. 

또 피카츄처럼 업그레이드되는 캐릭터인 경우, 
업그레이드될 때 새로 인스턴스를 만들고 
수정을 하게 되면서 값들을 죄다 복사하다가 한두개 값들을 빼먹을 위험성을 갖기 보다는
그냥 기존 인스턴스를 복사해 사용하는 편이 더 안전하다. 


동영상강좌



소스코드


Prototype.java

public abstract class Prototype implements Cloneable
{
	public String strName;
	public int nAge;
	
	public abstract Object cloneObject();
	
	
	public static void main(String args[])
	{
		Warrior w1 = new Warrior();
		w1.strName = "KKK";
		w1.nAge = 25;
		
		Warrior w2 = w1.cloneObject();
		System.out.println("w2.strName = " + w2.strName);
	}
}


Warrior.java

public class Warrior extends Prototype 
{
	@Override
	public Warrior cloneObject()
	{
		try
		{
			return (Warrior) this.clone();
		}
		catch(Exception ex)
		{
			ex.printStackTrace();
		}
		
		return null;
	}
}





'프로그래밍 > 디자인패턴' 카테고리의 다른 글

01. Singleton 패턴  (3) 2017.02.07
00. 디자인패턴 강의를 시작하며  (2) 2017.02.07