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