原型模式(Prototype): 用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。

原型模式其实就是从一个对象创建另外一个可定制的对象,而且不需要知道任何创建的细节。
原型模式基本代码
#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; }
浅拷贝和深拷贝 详细见《大话数据结构》第9章