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

////////////////Prototype.h///////
#ifndef _PROTOTYPE_H_
#define _PROTOTYPE_H_
class Prototype
{
public:
virtual ~Prototype();
virtual Prototype* Clone() const = ;
protected:
Prototype();
private:
}; class ConcretePrototype : public Prototype
{
public:
~ConcretePrototype();
ConcretePrototype();
ConcretePrototype(const ConcretePrototype& cp);
Prototype* Clone() const;
protected:
private:
}; #endif
 ////////////////Prototype.cpp///////
#include "Prototype.h"
#include <iostream>
using namespace std; Prototype::~Prototype()
{ }
Prototype::Prototype()
{ }
Prototype* Prototype::Clone() const
{
return ;
}
ConcretePrototype::~ConcretePrototype()
{ }
ConcretePrototype::ConcretePrototype()
{
cout<<"创建一个对象"<<endl;
}
ConcretePrototype::ConcretePrototype(const ConcretePrototype& cp)
{
cout<<"复制原型"<<endl;
}
Prototype* ConcretePrototype::Clone() const
{
return new ConcretePrototype(*this);
}
 ////////////////main.cpp///////
#include "Prototype.h"
#include <iostream>
using namespace std; int main()
{
Prototype* p = new ConcretePrototype();
Prototype* p1 = p->Clone();
Prototype* p2 = p1->Clone(); system("pause");
return ;
}

最新文章

  1. iframe自适应高度
  2. JavaScript 的性能优化:加载和执行
  3. GridView第一个Item中的CheckBox不工作
  4. PostgreSQL Replication之第十二章 与Postgres-XC一起工作(4)
  5. 我们都遇到过的 Replace Blank Space
  6. 开始学习IOS
  7. 画画板--第三方开源--DrawableView
  8. iOS 下拉刷新 上拉加载实现原理
  9. 函数lock_rec_get_nth_bit
  10. display: inline-block 的神奇效果
  11. swift 关于delegate
  12. 【动态规划】【归并】Vijos P1412 多人背包
  13. Android仿微信朋友圈,全文收起功能,附源码
  14. vue.js项目构建
  15. MiniGUI + Hi3531 笔记 .
  16. Java8新特性(一)_interface中的static方法和default方法
  17. python3 使用SimpleHTTPServer搭建web服务器
  18. iSpy免费的开源视频监控平台
  19. 目录文件管理及vim
  20. robotium测试创建java文件和junit文件区别

热门文章

  1. (转载)函数:mysqli_query和mysql_query有何区别?
  2. 网络流(费用流)CodeForces 321B:Ciel and Duel
  3. excel小技巧-用于测试用例的编号栏:“获取当前单元格的上一格的值+1”=INDIRECT(ADDRESS(ROW()-1,COLUMN()))+1
  4. POJ 2260(ZOJ 1949) Error Correction 一个水题
  5. zoj 3659 Conquer a New Region(并查集)
  6. Java 内存泄露的理解与解决过程
  7. Segments - POJ 3304 (判断直线与线段是否相交)
  8. 遇到奇怪的C#/C/C++或者Java的bug可以去问问Coverity
  9. 【转】Android通过Wifi来调试你的应用
  10. 怎样安装两个tomcat,怎样配置