设计模式之原型模式及c++实现

来源:互联网 发布:矩阵方程的通解的求法 编辑:程序博客网 时间:2024/05/23 20:52

原型设计模式属于创建型模式。创建方式为通过一个已经存在的对象复制出完全一样的对象。

适用场合为: 
1.  构造函数复杂、耗时的对象。2.  对象的当前状态不确定、包含的数据不断变化
 
举例:
        假设我们有这样的需求,我们在ORM框架的设计中,经常会遇到这样的问题,我们在处理某个对象的编辑状态的时候,我们想框架给我们生成的更新数据库的SQL语句,不包含数据列没有发生变化的列,不要出现在更新语句中,这个时候,可能一个方案会是,编辑前克隆一个对象,然后等编辑后提交的时候,生成相应的语句时进行对比之前克隆的对象,看看是否数据发生变化,如果说对象的部分数据列发生变化,那么就只是把变化的数据列进行更新。
 
        对象拷贝时应注意浅复制和深复制的区别
 
原型设计模式类图:
c++ demo 如下
#include <stdio.h>
class CProtoType  
{
public:
virtual ~CProtoType();
virtual CProtoType* Clone() const=0;
protected:
CProtoType();
};
class ConcretePrototype:public CProtoType
{
public:
ConcretePrototype(){printf("ConcreteProtoType Constructor\n");};
ConcretePrototype(const ConcretePrototype& protoType){printf("ConcreteProtoType Copy Constructor\n");};
virtual CProtoType* Clone() const{return new ConcretePrototype(*this);};
protected:
private:
};
 
int main(int argc, char* argv[])
{
CProtoType* pt=new ConcretePrototype();
CProtoType* pt2=pt->Clone();
getchar();
return 0;
}