정의
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 |