设计模式(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);
}
};