原型模式基本代码
#include<iostream>
#include<string>
using namespace std;
//抽象基类
class Prototype
{
private:
string m_strName;
public:
Prototype(string strName) { m_strName = strName; }
Prototype() { m_strName = " "; }
void Show()
{
cout << m_strName << endl;
}
virtual Prototype* Clone() = 0;
};
// class ConcretePrototype1
class ConcretePrototype1 : public Prototype
{
public:
ConcretePrototype1(string strName) : Prototype(strName) {}
ConcretePrototype1() {}
virtual Prototype* Clone()
{
ConcretePrototype1 *p = new ConcretePrototype1();
*p = *this; //复制对象
return p;
}
};
// class ConcretePrototype2
class ConcretePrototype2 : public Prototype
{
public:
ConcretePrototype2(string strName) : Prototype(strName) {}
ConcretePrototype2() {}
virtual Prototype* Clone()
{
ConcretePrototype2 *p = new ConcretePrototype2();
*p = *this; //复制对象
return p;
}
};
//客户端
int main()
{
ConcretePrototype1* test = new ConcretePrototype1("小王");
ConcretePrototype1* test2 = (ConcretePrototype1*)test->Clone();
test->Show();
test2->Show();
system("pause");
return 0;
}