设计模式-创建模式-原型模式

2020-04-28  本文已影响0人  阿棍儿_Leon

原型模式简单说就是自我复制,实现层面就是实现一个Clone函数,也可以认为是拷贝构造函数的指针版本。

以下代码定义了原型模式的抽象类,核心就是Clone函数。

#include <iostream>

using namespace std;

class ProtoType
{
public:
    virtual ProtoType* Clone()=0;
    virtual ~ProtoType(){}
};

以下代码定义了原型模式的实现类,由于属性简单,这里可以用默认的拷贝构造函数。

class ConcreteProtoType:public ProtoType
{
public:
    int attribute;
    ConcreteProtoType(int value):attribute(value){}
    ProtoType* Clone()
    {
        return new ConcreteProtoType(*this);
    }
    void Display(void)
    {
        cout<<"attribute="<<attribute<<endl;
    }
};

以下是对原型模式的演示,分别打印了原型和克隆体的属性。

int main()
{
    ProtoType* P = new ConcreteProtoType(123);
    ProtoType* PClone = P->Clone();
    dynamic_cast<ConcreteProtoType*>(P)->Display();
    dynamic_cast<ConcreteProtoType*>(PClone)->Display();
    delete P;
    delete PClone;
    return 0;
}

输出

attribute=123
attribute=123
上一篇 下一篇

猜你喜欢

热点阅读