Prototype 模式提供了一個經過已存在對象進行新對象建立的接口(Clone) ,Clone()實現和具體的實現語言相關,在 C++中咱們將經過拷貝構造函數實現之。ios
////////////////Prototype.h/////// #ifndef _PROTOTYPE_H_ #define _PROTOTYPE_H_ class Prototype { public: virtual ~Prototype(); virtual Prototype* Clone() const = 0 ; protected: Prototype(); private: }; class ConcretePrototype : public Prototype { public: ~ConcretePrototype(); ConcretePrototype(); ConcretePrototype(const ConcretePrototype& cp); Prototype* Clone() const; protected: private: }; #endif
1 ////////////////Prototype.cpp/////// 2 #include "Prototype.h" 3 #include <iostream> 4 using namespace std; 5 6 7 Prototype::~Prototype() 8 { 9 10 } 11 Prototype::Prototype() 12 { 13 14 } 15 Prototype* Prototype::Clone() const 16 { 17 return 0; 18 } 19 ConcretePrototype::~ConcretePrototype() 20 { 21 22 } 23 ConcretePrototype::ConcretePrototype() 24 { 25 cout<<"建立一個對象"<<endl; 26 } 27 ConcretePrototype::ConcretePrototype(const ConcretePrototype& cp) 28 { 29 cout<<"複製原型"<<endl; 30 } 31 Prototype* ConcretePrototype::Clone() const 32 { 33 return new ConcretePrototype(*this); 34 }
1 ////////////////main.cpp/////// 2 #include "Prototype.h" 3 #include <iostream> 4 using namespace std; 5 6 int main() 7 { 8 Prototype* p = new ConcretePrototype(); 9 Prototype* p1 = p->Clone(); 10 Prototype* p2 = p1->Clone(); 11 12 system("pause"); 13 return 0 ; 14 }