티스토리 뷰

프로그램을 작성하다보면, 특정 객체의 복사본이 필요할 때가 있다. 이럴 때, 팩토리를 이용해 같은 종류의 객체를 만든 후 필요한 데이터를 복사하는 방식은 매우 번거롭습니다.

이 때 복사 생성자등을 통해 객체의 복사본을 만드는 것을 프로토타입 패턴이라고 합니다.


class Item { protected: int m_nItemIdx; //아이템고유번호 int m_nItemNo; //아이템식별번호 public: Item() { m_nItemIdx = -1; m_nItemNo = -1; } Item(const Item & a_Item) { m_nItemIdx = a_Item.m_nItemIdx; m_nItemNo = a_Item.m_nItemNo; } virtual Item *Clone(){ return new CItem(*this); } }; class InstanceItem : public Item //갯수제사용아이템 { protected: int m_nDurability; public: InstanceItem() : Item() { m_nDurability = 0; } InstanceItem(const InstanceItem & instanceItem) { m_nItemIdx = instanceItem.m_nItemIdx; m_nItemNo = instanceItem.m_nItemNo; m_nDurability = instanceItem.m_nDurability; } virtual Item *Clone(){ return new InstanceItem(*this); } }; void OnCopy(Item *item) { Item *pNewItem = item->Clone(); //pNewItem 은파라미터로넘어온item의복사본이다. //pNewItem 을사용해서각종처리를했으면삭제해주자. delete pNewItem; }


댓글