原型模式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注意事项
构造函数将不被执行
深浅拷贝问题,当类内部含有指针时,需要自己实现深拷贝。