Prototype 模式
2024-09-23 09:50:44
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 ;
}
最新文章
- iframe自适应高度
- JavaScript 的性能优化:加载和执行
- GridView第一个Item中的CheckBox不工作
- PostgreSQL Replication之第十二章 与Postgres-XC一起工作(4)
- 我们都遇到过的 Replace Blank Space
- 开始学习IOS
- 画画板--第三方开源--DrawableView
- iOS 下拉刷新 上拉加载实现原理
- 函数lock_rec_get_nth_bit
- display: inline-block 的神奇效果
- swift 关于delegate
- 【动态规划】【归并】Vijos P1412 多人背包
- Android仿微信朋友圈,全文收起功能,附源码
- vue.js项目构建
- MiniGUI + Hi3531 笔记 .
- Java8新特性(一)_interface中的static方法和default方法
- python3 使用SimpleHTTPServer搭建web服务器
- iSpy免费的开源视频监控平台
- 目录文件管理及vim
- robotium测试创建java文件和junit文件区别
热门文章
- (转载)函数:mysqli_query和mysql_query有何区别?
- 网络流(费用流)CodeForces 321B:Ciel and Duel
- excel小技巧-用于测试用例的编号栏:“获取当前单元格的上一格的值+1”=INDIRECT(ADDRESS(ROW()-1,COLUMN()))+1
- POJ 2260(ZOJ 1949) Error Correction 一个水题
- zoj 3659 Conquer a New Region(并查集)
- Java 内存泄露的理解与解决过程
- Segments - POJ 3304 (判断直线与线段是否相交)
- 遇到奇怪的C#/C/C++或者Java的bug可以去问问Coverity
- 【转】Android通过Wifi来调试你的应用
- 怎样安装两个tomcat,怎样配置