设计模式(7)原型模式

设计模式(7)原型模式

情景

原型模式
如何复制一个对象?对于一个类而言,它存在一些私有的成员,这些成员无法被访问,那么就需要提供一个接口来实现对象复制。

解决方案

原型模式将克隆过程委派给被克隆的实际对象。 模式为所有支持克隆的对象声明了一个通用接口, 该接口让你能够克隆对象, 同时又无需将代码和对象所属类耦合。 通常情况下, 这样的接口中仅包含一个 克隆方法。

class protoType{
protected:
    string name;
    float fd;
public:
    protoType(){}
    protoType(string _name):name(_name){}
    virtual ~protoType(){}
    virtual protoType *clone() const = 0;
    virtual void method (float _fd){
        fd = _fd;
        cout<<name<<" "<<_fd<<endl;
    }
};
class protoType1:public {
private:
    float fd1;
public:
    protoType1(string _name,float _fd):protoType(_name),float fd1(_fd){}
    protoType *clone()const override {
        return new protoType1(*this);
     }
};

class protoType2{
private:
    float fd2;
public:
    protoType1(string _name,float _fd):protoType(_name),float fd2(_fd){}
    protoType *clone()const override {
        return new protoType2(*this);
     }
};
posted @ 2022-08-09 22:16  Paranoid5  阅读(17)  评论(0编辑  收藏  举报