小话设计模式六:原型模式

来源:互联网 发布:python中re.search 编辑:程序博客网 时间:2024/05/16 14:37

转自http://www.cnblogs.com/venow/archive/2012/11/05/2755913.html

原型模式定义:

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

原型模式解析:

  原型模式是一种创建型设计模式,该模式允许一个对象再创建另外一个可定制的对象,根本无需知道任何如何创建的细节,工作原理是:通过将一个原型对象传给那个要发动创建的对象,这个要发动创建的对象通过请求原型对象拷贝它们自己来实施创建。它主要面对的问题为:"某些结构复杂的对象"的创建工作;由于需求的变化,这些对象经常面临着剧烈的变化,但是他们却拥有比较稳定一致的接口。

  UML图如下:

  简单示例代码如下:

复制代码
//基类class Prototype{public:    virtual ~Prototype();    virtual Prototype* Clone() const = 0; //一个克隆自身的虚函数,调用拷贝构造函数protected:    Prototype();};Prototype::Prototype(){    cout<<"Construct Prototype"<<endl;}Prototype::~Prototype(){    cout<<"Destruct Prototype"<<endl;}class ConcretePrototype : public Prototype{public:    ConcretePrototype();    ConcretePrototype(const ConcretePrototype& rhs);    ~ConcretePrototype();    virtual Prototype* Clone() const;};ConcretePrototype::ConcretePrototype(){    cout<<"Construct ConcretePrototype"<<endl;}ConcretePrototype::ConcretePrototype(const ConcretePrototype& rhs){    cout<<"Copy Construct ConcretePrototype"<<endl;}ConcretePrototype::~ConcretePrototype(){    cout<<"Destruct ConcretePrototype"<<endl;}Prototype* ConcretePrototype::Clone() const{    return new ConcretePrototype(*this);}int _tmain(int argc, _TCHAR* argv[]){    Prototype* pInstanceOne = new ConcretePrototype;    Prototype* pInstanceTwo = pInstanceOne->Clone();    delete pInstanceOne;    delete pInstanceTwo;    return 0;}
复制代码

0 0
原创粉丝点击