GOOD:從一個對象再建立另一個可定製的對象,而無需知道任何建立的細節。並能提升建立的性能。 ios
說白了就COPY技術,把一個對象完整的COPY出一份。性能
#ifndef __PROTOTYPE_MODEL__ #define __PROTOTYPE_MODEL__ #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; } }; #endif //__PROTOTYPE_MODEL__ /* 《客戶端》 #include "PrototypeModel.h" int _tmain(int argc, _TCHAR* argv[]) { ConcretePrototype1* test = new ConcretePrototype1("小王"); ConcretePrototype2* test2 = (ConcretePrototype2*)test->clone(); test->show(); test2->show(); return 0; } */