原型模式可以理解成克隆模式或者深拷贝模式。
对自身状态的完整复制
class testModel
{
public:
testModel(int var, char* pch, vector<string> vstr)
: m_ivar(var)
, m_pch(new char(strlen(pch)+1))
, m_vstr(vstr)
{
strcpy(m_pch, pch);
}
testModel(const testModel& rval)
{
this->m_ivar = rval.m_ivar;
this->m_pch = new char(strlen(rval.m_pch) + 1);
strcpy(this->m_pch, rval.m_pch);
this->m_vstr = rval.m_vstr;
}
testModel* clone()
{
return new testModel(*this);
}
private:
int m_ivar;
char* m_pch;
vector<string> m_vstr;
};