#include <iostream>
#include <string> using namespace std; class CPrototype
{
public:
CPrototype()
{ }
CPrototype(int iAge): m_iAge(iAge)
{ }
virtual CPrototype* Clone() = ; int m_iAge;
}; class CConcretePrototypeA: public CPrototype
{
public:
CConcretePrototypeA(int iAge, const string& strName):CPrototype(iAge), m_strName(strName)
{ } // virtual CPrototype* Clone()
virtual CConcretePrototypeA* Clone()
{
return new CConcretePrototypeA(*this);
} private:
CConcretePrototypeA(const CConcretePrototypeA& tmp)
{
this->m_iAge = tmp.m_iAge;
this->m_strName = tmp.m_strName;
} public:
string m_strName;
}; int main(int argc, char* argv[])
{
// CPrototype* pstTypeA = new CConcretePrototypeA(30, "lisi");
// CPrototype* pstTypeB = pstTypeA->Clone(); CConcretePrototypeA* pstTypeA = new CConcretePrototypeA(, "lisi"); CConcretePrototypeA* pstTypeB = pstTypeA->Clone();
pstTypeB->m_iAge = ;
pstTypeB->m_strName = "zhangsan"; cout<< "pstTypeA.m_iAge: "<< pstTypeA->m_iAge<< "\tpstTypeA.m_strName "<< pstTypeA->m_strName<< endl;
cout<< "pstTypeB.m_iAge: "<< pstTypeB->m_iAge<< "\tpstTypeB.m_strName "<< pstTypeB->m_strName<< endl; delete pstTypeA;
delete pstTypeB; return ;
}
////////////////////////////////
[root@ ~/learn_code/design_pattern/7_proto_type]$ ./protoType
pstTypeA.m_iAge: pstTypeA.m_strName lisi
pstTypeB.m_iAge: pstTypeB.m_strName zhangsan

设计模式——原型模式(C++实现)的更多相关文章

  1. 10. 星际争霸之php设计模式--原型模式

    题记==============================================================================本php设计模式专辑来源于博客(jymo ...

  2. PHP 设计模式 原型模式(Prototype)之深/浅拷贝

      看PHP 设计模式 原型模式(Prototype)时,衍生出一个扩展问题之 原型拷贝的浅拷贝和深拷贝问题(不管写Java还是写PHP还是写JS时都多多少少遇到过对象拷贝问题)   比如写前端页面时 ...

  3. PHP设计模式 原型模式(Prototype)

    定义 和工厂模式类似,用来创建对象.但实现机制不同,原型模式是先创建一个对象,采用clone的方式进行新对象的创建. 场景 大对象的创建. 优点 1.可以在运行时刻增加和删除产品 2.可以改变值或结构 ...

  4. 【设计模式】Java设计模式 - 原型模式

    [设计模式]Java设计模式 - 原型模式 不断学习才是王道 继续踏上学习之路,学之分享笔记 总有一天我也能像各位大佬一样 原创作品,更多关注我CSDN: 一个有梦有戏的人 准备将博客园.CSDN一起 ...

  5. C#设计模式-原型模式

    在软件系统中,当创建一个类的实例的过程很昂贵或很复杂,并且我们需要创建多个这样类的实例时,如果我们用new操作符去创建这样的类实例,这未免会增加创建类的复杂度和耗费更多的内存空间,因为这样在内存中分配 ...

  6. [工作中的设计模式]原型模式prototype

    一.模式解析 提起prototype,最近看多了js相关的内容,第一印象首先是js的原型 var Person=function(name){ this.name=name; } Person.pro ...

  7. 我的Java设计模式-原型模式

    "不好意思,我是卧底!哇哈哈哈~"额......自从写了上一篇的观察者模式,就一直沉浸在这个角色当中,无法自拨.昨晚在看<使徒行者2>,有一集说到啊炮仗哥印钞票,我去, ...

  8. C++设计模式——原型模式

    什么是原型模式? 在GOF的<设计模式:可复用面向对象软件的基础>中是这样说的:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象.这这个定义中,最重要的一个词是“拷贝”,也就 ...

  9. Java设计模式—原型模式

    原型设计模式是一种比较简单的设计模式,在项目中使用的场景非常多. 个人理解: 原型模式实现了对Java中某个对象的克隆功能,即该对象的类必须implements实现Cloneable接口来标识为可被克 ...

  10. 设计模式——原型模式(Prototype)

    用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象.——DP UML类图 模式说明 如果把在一张纸上手写一篇简历的过程看成是类的实例化过程,那么通过原型模式创建对象的过程就是拿着这张纸到复印 ...

随机推荐

  1. Python——Web.py詳解

    ubuntu安裝Web.py sudo pip install web.py 測試代碼: import web urls = ( '/(.*)','hello' ) app = web.applica ...

  2. JS Cookie丢失问题

    JS Cookie丢失问题 前些天有人问我vue中使用proxy发送请求,为什么请求时cookie丢失,首先说一下我对cookie的理解: 1.cookie在正常情况下是会在每次请求时自动携带, 2. ...

  3. 在测试crontab执行脚本的时候,修改了linux的系统时间,crontab不执行了。

    今天在写服务器的perl脚本的时候,在完成一版脚本打算通过crontab来测试一下呢,因为直接执行脚本文件是没有问题的,但是当配置到crontab定期执行时就会出现问题,到了指定的时间了,但是脚本文件 ...

  4. 运行web项目端口占用问题

    ---恢复内容开始--- 有时候运行web项目会提示8080端口已经被占用这一类问题(Error running Tomcat8: Address localhost:1099 is already ...

  5. javascript form表单常用的正则表达式

    form验证时常用的几个正则表达式 座机: \d{3,4}-\d{7,8} 手机号: /^1[34578][0-9]{9}$/ (\86)?\s+1[34578]\d{0-9} (\+86)?\s*1 ...

  6. R︱mlr包帮你挑选最适合数据的机器学习模型(分类、回归)+机器学习python和R互查手册

    一.R语言的mlr packages install.packages("mlr")之后就可以看到R里面有哪些机器学习算法.在哪个包里面. a<-listLearners() ...

  7. php5.3命名空间内使用 php内置类的时候

    在命名空间内使用内置类库的时候,需要使用 \ 比如 $zip =new \ZipArchive;

  8. 图像处理------基于Otsu阈值二值化

    一:基本原理 该方法是图像二值化处理常见方法之一,在Matlab与OpenCV中均有实现. Otsu Threshing方法是一种基于寻找合适阈值实现二值化的方法,其最重 要的部分是寻找图像二值化阈值 ...

  9. select(Linux 编程)

    select系统调用时用来让我们的程序监视多个文件句柄的状态变化的.程序会停在select这里等待,直到被监视的文件句柄有一个或多个发生了状态改变. 关于文件句柄,其实就是一个整数,通过socket函 ...

  10. Linux显示更新十次后退出

    Linux显示更新十次后退出 youhaidong@youhaidong-ThinkPad-Edge-E545:~$ top -n 10 top - 19:19:21 up 48 min, 2 use ...