Prototype - 原型模式
来源:互联网 发布:约翰克里斯多夫 知乎 编辑:程序博客网 时间:2024/06/06 01:07
定义
用原型实例来指定创建对象的种类,通过拷贝原型来创建新的对象。
案例
比如,在设计纸币的时候,最初的设计图就是一个原型,以后在造纸币的时候,就不用再设计了,根据之前设计好的纸币直接复印就可以了。现在有一个抽象类Money,它是所有纸币的一个基类,带有一个复制功能clone(), 人民币Renminbi和Dollar都是从它继承而来。
钱对与我们来说都一样,只要能复制就可以了,应为是通过复制,所以我们要在赋值构造的时候注意深拷贝和浅拷贝的问题,clone()而来的对象和原型对象是不同的对象,不能引用相同的数据。
class Money {
public:
virtual Money* clone() const = 0;
}
class Renminbi : public Money {
public:
Renminbi(const Renminbi& other) {
m_amount = other.m_amount;
}
Money* clone() const {
return new Door(*this);
}
private:
int m_amount;
}
Money* rmb = new Renminbi();
Pocket pocket;
pocket.push(rmb);
pocket.push(rmb.clone());
pocket.push(rmb.clone());
pocket.push(rmb.clone());
...
这样就不用担心很快就花完了。
适用性
- 当一个对象在运行是才能确定,经过一些列的操作。
- 当要保存一个对象在运行过程中的不同时刻的信息。
- 当要创建一系列相同的对象。
相关模式
一搬原型模式不单独使用,是和其他的模式一起组合使用。
0 0
- 原型模式 Prototype模式
- 原型模式 Prototype模式
- 原型模式:prototype模式
- 原型模式 Prototype模式
- Prototype模式(原型模式)
- 原型模式:prototype模式
- 原型模式(Prototype)
- 原型模式(prototype)
- 原型(Prototype)模式
- 原型模式(Prototype Pattern)
- 原型(ProtoType)模式
- 原型模式(Prototype Pattern)
- 原型模式(Prototype Pattern)
- 原型模式 Prototype Pattern
- Prototype 原型模式
- 原型模式(Prototype)
- 原型模式 Prototype Pattern
- Prototype 原型模式
- 机房收费系统—抽象工厂+反射+配置文件
- windows下ruby中显示中文的3种方法
- hdu 4416 Good Article Good sentence ( 后缀数组 )
- OpenCV通过cvFindContours与cvDrawCountours函数查找轮廓
- 椭圆曲线拟合
- Prototype - 原型模式
- Merge Sorted Array
- Comparator
- 互联网和移动互联网怎么挣钱?
- HashMap ,treeMap,LinkedHashMap区别
- 使用Spring的注解方式实现AOP
- FZU1607 Greedy division(逆向思维)
- 使用mysql的disctinct group by查询不重复记录
- linux的strings命令