美文网首页
设计模式-创建模式-原型模式

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

作者: 阿棍儿_Leon | 来源:发表于2020-04-28 19:38 被阅读0次

    原型模式简单说就是自我复制,实现层面就是实现一个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
    

    相关文章

      网友评论

          本文标题:设计模式-创建模式-原型模式

          本文链接:https://www.haomeiwen.com/subject/rgvbwhtx.html