设计模式--原型模式C++实现

原型模式C++实现

1定义

用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象

2类图

3实现

class Prototype

{

protected:

  Prototype();

public:

  virtual Prototype* Clone() const = 0;

  vitual ~Prototype() = 0;

};

class PrototypeClass:public Prototype

{

public:

  PrototypeClass();

  PrototypeClass(const PrototypeClass & cp);

  Prototype* Clone()const

  {return 0;}

};

注:原型模型在C++中的体现关键就在于拷贝构造函数的实现方式。

工厂模式,建造者模式,原型模式都是通过已有类对象来构造新对象,区别在于

工厂模式:侧重批量生产多个相互依赖类的对象

建造者模式:侧重复杂对象的分步骤创建

原型模式:通过复制自身来实现新对象构造

4 应用

优点

性能优良,避免了构造函数的约束。

5使用场景

①资源优化场景,类的初始化需要资源(数据,硬件)比较大

②性能和安全要求,通过new频繁生产时会有数据准备和权限问题

③一个对象多个修改的场景,eg学生信息表格。

6注意事项

构造函数将不被执行

深浅拷贝问题,当类内部含有指针时,需要自己实现深拷贝。

 

posted @ 2016-03-26 23:01  狼行博客园  阅读(457)  评论(0编辑  收藏  举报