设计模式学习-Prototype(原型)
意图:用原型示例指定创建对象的种类,通过拷贝这些原型创建新的对象
适用性:
当实例化的类是在运行时指定时
为了避免创建一个与产品类平行的工厂类
当一个类的示例只能有几个不同状态组合中的一种时
示例代码:
#pragma once
//孙悟空一变二二变四…
class CMonkeyKing
{
public:
CMonkeyKing(int
i);
public:
~CMonkeyKing(void);
public:
void
Display()
{
if(m_i==0)
{
_tprintf(_T("Stone monkey/n"));
}
if(m_i
==1)
{
_tprintf(_T("qitiandasheng/n"));
}
else
{
_tprintf(_T("other
status/n"));
}
}
public:
CMonkeyKing*
Clone()
{
return new CMonkeyKing(*this);
}
private:
int m_i;
};
CMonkeyKing** kings = new CMonkeyKing*[100];
CMonkeyKing
stonKing(0);
CMonkeyKing qitianKing(1);
CMonkeyKing
otherKin(-1);
for(int i=0;i<100;i++)
{
if(i%3==0)
{
kings[i] = stonKing.Clone();
}
else if(i%3==1)
{
kings[i] =
qitianKing.Clone();
}
else
{
kings[i] = otherKin.Clone();
}
}
//CMonkeyKing* pTemp =
*kings;
for(int j=0;j<100;j++)
{
kings[j]->Display();
}