创建型设计模式---原型模式(Prototype)
来源:互联网 发布:什么游戏对amd有优化 编辑:程序博客网 时间:2024/04/29 16:19
Prototype模式用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。
(1)当我们的对象类型不是开始就能确定的,而这个类型是在运行期确定的话,
那么我们通过这个类型的对象克隆出一个新的对象比较容易一些
(2)有的时候,我们需要一个对象在某个状态下的副本,此时,我们使用原型模式是最好的选择;
例如:一个对象,经过一段处理之后,其内部的状态发生了变化;这个时候,
我们需要一个这个状态的副本,如果直接new一个新的对象的话,但是它的状态是不对的,
此时,可以使用原型模式,将原来的对象拷贝一个出来,这个对象就和之前的对象是完全一致的了;
(3)当一个类的实例只能有几个不同状态组合中的一种时,
建立相应数目的原型并克隆他们可能比每次用合适的状态手工实例化该类更方便一些
#include <iostream>
#include <string.h>
using namespace std;
class IPrototype
{
public:
virtual ~IPrototype() {}
virtual IPrototype * clone() = 0;
virtual void setData(char *str) = 0;
};
class Prototype : public IPrototype
{
public:
Prototype(int size)
{
len = size;
if (len >= 0)
{
data = new char[len+1];
}
}
Prototype(const Prototype &tmp)
{
len = tmp.len;
if (len >= 0)
{
data = new char[len+1];
}
}
~Prototype()
{
if (NULL != data)
{
delete []data;
data = NULL;
}
}
IPrototype * clone()
{
return (new Prototype(*this));
}
void setData(char *str)
{
strcpy(data, str);
cout << data << endl;
}
private:
char *data;
int len;
};
int main()
{
Prototype prototype(64);
IPrototype *proto = prototype.clone();
proto->setData("123456789");
delete proto;
proto = NULL;
return 0;
}
- 创建型设计模式---原型模式(Prototype)
- [设计模式-创建型]原型(Prototype)
- 设计模式-创建型-prototype 原型
- 设计模式:创建型模式:原型模式(prototype pattern)
- (创建模式)设计模式之Prototype(原型)
- 设计模式笔记--创建型模式之四--原型prototype
- 设计模式(四)原型模式Prototype(创建型)
- 设计模式(5)-创建型-原型(Prototype)模式(个人笔记)
- 设计模式(四)原型模式Prototype(创建型)
- 设计模式(四)原型模式Prototype(创建型)
- 【设计模式基础】创建型模式 - 6 - 原型(Prototype)
- 设计模式--原型模式Prototype(创建型)
- 设计模式之Prototype(原型模式)对象创建型
- 设计模式(四)原型模式(Prototype)-创建型
- 设计模式(创建型)之原型模式(Prototype Pattern)
- JAVA设计模式(5) —<创建型>原型模式(Prototype)
- 设计模式(四)原型模式Prototype(创建型)
- 【设计模式】创建型模式之原型Prototype
- Oracle修改字段类型和长度
- 55分钟学会正则表达式
- 使用Tcl脚本分配FPGA管脚
- C# Json
- quick-lua 学习笔记(一)t
- 创建型设计模式---原型模式(Prototype)
- 关于“using namespace std”
- use a recycled bitmap 的发现
- Bimap实例化研究
- Markdown中插入数学公式的方法
- dubbo 用户指南 ***************
- 程序员是什么又代表这多少角色?你想过吗?
- 类模板,多种类型的类模板,自定义类模板,类模板的默认类型,数组的模板实现,友元和类模板,友元函数,类模板与静态变量,类模板与普通类之间互相继承,类模板作为模板参数,类嵌套,类模板嵌套,类包装器
- linux常用指令