设计模式C++描述----08.原型(Prototype)模式

一. 概述

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

换句话说,就是不用重新初始化对象,而是动态地获得对象运行时的状态

再说明白点,就是要一个拷贝过构造函数类似功能的接口

结构图如下:

代码如下:

  1. //原型类,有一个clone接口  
  2. class Prototype  
  3. {  
  4. public:  
  5.     virtual ~Prototype() {}  
  6.       
  7.     virtual Prototype* Clone() const = 0;  
  8. };  
  9.   
  10. //具体原型类,实现一个clone自身的操作  
  11. class ConcretePrototype:public Prototype  
  12. {  
  13. public:  
  14.     ConcretePrototype() {}  
  15.       
  16.     //拷贝构造函数  
  17.     ConcretePrototype(const ConcretePrototype& cp)  
  18.     {  
  19.         cout<<"ConcretePrototype copy ..."<<endl;  
  20.     }  
  21.       
  22.     //克隆接口  
  23.     Prototype* Clone() const  
  24.     {  
  25.         return new ConcretePrototype(*this);  
  26.     }  
  27. };  
  28.   
  29.   
  30. //测试代码  
  31. int main(int argc,char* argv[])  
  32. {  
  33.     //拷贝构造操作  
  34.     ConcretePrototype p1;  
  35.     ConcretePrototype p2 = p1;  
  36.   
  37.     //克隆操作  
  38.     Prototype* p3 = new ConcretePrototype();  
  39.     Prototype* p4 = p3->Clone();  
  40.       
  41.     return 0;  
  42. }  

二. 说明

1. Prototype 模式的关键就是(C++中)拷贝构造函数的实现方式,这也是C++实现技术层面上的事情。

2. 示例代码中不涉及到深层拷贝(主要指有指针、复合对象的情况),主要在于体现Prototype模式的思想。

原文地址:https://www.cnblogs.com/any91/p/3247989.html