Prototype 模式提供了一个通过已存在对象进行新对象创建的接口(Clone) ,Clone()实现和具体的实现语言相关,在 C++中我们将通过拷贝构造函数实现之。
////////////////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 }