c++之原型模式
来源:互联网 发布:弘付数据科技有限公司 编辑:程序博客网 时间:2024/06/05 09:38
作用:
用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。
Prototype模式提供了一个通过已存在对象进行新对象创建的接口(Clone), Clone()实现和具体的语言相关,在C++中通过拷贝构造函数实现。
定义
用原型(Prototype)实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。
结构
理解
1. Prototype是原型基类,提供Clone纯虚方法,它根据不同的派生类来克隆不同的对象。
2. ConcretePrototype是原型具体类。实现Clone方法,克隆自己,返回克隆后的新对象。
3. Client调用基类Clone接口,就可以得到一个克隆对象。
要点
1. 原型模式中,Client并不知道要克隆对象的实际类型,只需知道基类类型即可。
2. 克隆对象比直接创建对象的优点在于,克隆是将原有对象的行为属性带到了新的对象中。
3. C++没有克隆方法,要克隆一个对象,需要借助拷贝构造函数(Copy Constructor)来实现。拷贝构造函数中实现拷贝对象有浅拷贝和深拷贝:
浅拷贝是指对象复制时,只是对于对象中的数据成员进行值拷贝;深拷贝是指对象赋值时,对于对象的简单数据成员进行值拷贝,对于对象中的动态成员(堆或者其他系统资源),要重新分配动态空间。
当类不定义拷贝构造函数的时候,编译器会自动生一个构造函数,叫做默认拷贝构造函数。默认拷贝构造函数使用浅拷贝方式。如果类中含有动态数据成员,就必须使用深拷贝方式实现拷贝构造函数,否则,在销毁对象时,两个对象的析构函数将对同一个内存空间释放两次,产生运行时错误。
应用
源码中,Line是原型基类,具体克隆类是直线和曲线。
源码
#include <iostream>
#include <string>
using namespace std;
//原型基类. 线条
class CLinePrototype
{
public:
};
//原型具体类. 直线
class CBeelinePrototype : public CLinePrototype
{
public:
protected:
};
//原型具体类. 曲线
class CCurvePrototype : public CLinePrototype
{
public:
protected:
};
//Client
CLinePrototype* Clone(CLinePrototype* pPrototype)
{
}
int main()
{
}
输出:
clone a line
beeline weight: 10
clone a curve
beeline type: DOT
转载本站文章请注明,转载自:神秘果
本文链接:
0 0
- 设计模式之原型模式(C++)
- C#--设计模式之原型模式
- C语言和设计模式(之原型模式)
- C语言和设计模式(之原型模式)
- C语言和设计模式(之原型模式)
- C语言和设计模式(之原型模式)
- 23. C语言和设计模式(之原型模式)
- C语言和设计模式(之原型模式)
- 4、C语言和设计模式(之原型模式)
- 【C++】Chapter6:原型模式
- Objective C--原型模式
- Objective C 原型模式
- Objective C--原型模式
- 【C++】原型模式
- 原型模式(C++)
- 设计模式之原型
- c++之原型模式
- 设计模式之原型
- 九度OJ 1446 Head of a Gang -- 并查集
- 【BFS+状态压缩】-POJ-1753-Flip Game
- chrome插件-新闻推荐评测插件开发
- URAL 1260 Nudnik Photographer 简单的递推
- 写给收获的2013年
- c++之原型模式
- 北漂程序员边城的幸福生活
- VBA中字符串连接/字符串拼接中“&”和“+”的区别
- 两种K短路问题
- 编写android服务
- android底部菜单实现
- Ubuntu搭配hadoop单机环境
- 心蓝订票助手破解
- oracle之触发器