设计模式---原型
2013-12-11 19:44
169 查看
一、功能
用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。
二、示例代码
一、功能
用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。
二、示例代码
namespace DesignPattern_Prototype { // class Prototype class Prototype //抽象基类 { public: virtual Prototype* Clone() = 0 ; } ; // class ConcretePrototype1 class ConcretePrototype1 : public Prototype { public: virtual Prototype* Clone() { ConcretePrototype1 *p = new ConcretePrototype1() ; *p = *this ; //复制对象 return p ; } } ; // class ConcretePrototype2 class ConcretePrototype2 : public Prototype { public: virtual Prototype* Clone() { ConcretePrototype2 *p = new ConcretePrototype2() ; *p = *this ; //复制对象 return p ; } } ; } 客户端代码: { using namespace DesignPattern_Prototype ; ConcretePrototype1 *obj1 = new ConcretePrototype1() ;//原型对象1 ConcretePrototype2 *obj2 = new ConcretePrototype2() ;//原型对象2 Prototype *newobj1 = obj1->Clone() ;//克隆对象1 Prototype *newobj2 = obj2->Clone() ;//克隆对象2 //使用复制出的对象newobj1和newobj2 }
三、优缺点 优点:复制自身。客户不知道需要对象的实际类型,只需知道它的抽象基类即可。(即有继承树的情况) 缺点:必须先有一个对象实例(即原型)才能clone。 四、实例 在一个图形编辑器中,每一个图形元素,如线、圆、文字等都应该支持拷贝操作,即点中图形,按下Ctrl+C,再按下Ctrl+V后就会复制一个新的图形。显然这是一种clone操作。所以在每个从Graphic派生出的图形子类都应运用Prototype模式,加上Clone操作。
相关文章推荐
- Java技术_每天掌握一种设计模式(006)_使用场景及简单实例(创建型:原型模式)
- 设计模式学习--原型模式(深复制与浅复制)
- 设计模式(四)原型模式(创建型)
- php设计模式 Prototype (原型模式)
- 设计模式之原型模式(Prototype)
- 设计模式 原型模式(Prototype Pattern)
- 设计模式学习笔记(十三:原型模式)
- c++ 设计模式之原型模式
- 设计模式-prototype原型
- 设计模式之原型模式
- 设计模式---原型模式Prototype(创建型)
- 设计模式从零开始——原型模式
- C#设计模式学习资料--原型模式
- 设计模式之原型模式
- 设计模式——原型模式
- 学习设计模式第八 - 原型模式
- php设计模式 原型模式
- [设计模式]原型模式
- 设计模式之原型模式(Prototype)
- PHP设计模式——原型模式