Prototype模式
引言: 当客户端需要重复打印大量相同或者相似的内容时(如打印机打印多份试卷),是否要在客户端写上相同的多份代码呢?显然不是了...
Prototype模式(原型模式):用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象。
实例:
CIPrototype接口类
View Code
1 class CIPrototype 2 { 3 public: 4 CIPrototype(); 5 virtual ~CIPrototype(); 6 virtual CIPrototype* Clone() = 0; 7 };
CConcreatePrototype具体类
View Code
1 class CConcreateProtype : public CIPrototype 2 { 3 public: 4 CConcreateProtype(); 5 CConcreateProtype(const CConcreateProtype &rObj); 6 virtual ~CConcreateProtype(); 7 8 virtual CIPrototype* Clone(); 9 };
View Code
1 CConcreateProtype::CConcreateProtype() 2 { 3 4 } 5 6 CConcreateProtype::~CConcreateProtype() 7 { 8 9 } 10 11 CConcreateProtype::CConcreateProtype(const CConcreateProtype &rObj) 12 { 13 cout<<"相关信息复制完成!"<<endl; 14 } 15 16 CIPrototype* CConcreateProtype::Clone() 17 { 18 return new (CConcreateProtype)(*this); 19 }
客户端
View Code
1 int main(int argc, char* argv[]) 2 { 3 CIPrototype *pPrototype1 = new CConcreateProtype; 4 CIPrototype *pPrototype2 = pPrototype1->Clone(); 5 6 delete pPrototype1; 7 delete pPrototype2; 8 9 return 0; 10 }
小结:原型模式其实是从一个对象再创建另外一个可定制的对象,而且不需要知道任何创建的细节,如果不需要深复制时,其实可以直接使用引用,更高效。
我喜欢一无所有,这样就只能一步一步的创造世界...


浙公网安备 33010602011771号