zoukankan      html  css  js  c++  java
  • 设计模式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模式的思想。

  • 相关阅读:
    [Windows]使用nmake命令
    正则表达式
    随机读取数据库
    常用正规表达式应用(收集于网络)
    javascript中使用正则表达式(替换应用)
    摘自网络"浅析UpdatePanel的partial render原理"
    css样式制作相册例子(摘自网络)
    javascript正则表达式常规用法(摘自网络)
    asp.net下的正规表达式替换
    摘自网络创业失败的10个教训(上)
  • 原文地址:https://www.cnblogs.com/any91/p/3247989.html
Copyright © 2011-2022 走看看