原型模式:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。
原型模式其实就是从一个对象再创建另外一个可定制的对象,而且不需要知道任何创建的细节
Prototype,原型类
class Prototype
{
private:
string id;
public:
Prototype (string id)
{
this->id = id;
}
string GetID()
{
return id;
}
//抽象类关键就是有这样一个Clone方法
virtual Prototype Clone() = 0;
};
具体原型类
class ConcretePrototype1 : public Prototype
{
public:
ConcretePrototype1(string id):Prototype(id)
{
}
ConcretePrototype1(const ConcretePrototype1 &other)
{
//深拷贝
}
virtual ConcretePrototype1* Clone()
{
return new ConcretePrototype1(*this);
}
}
客户端代码
void main()
{
ConcretePrototype1 *p1 = new ConcretePrototype1("I");
ConcretePrototype1 *c1 = p1->Clone();
cout << c1->GetID << endl;
}