设计模式-原型模式

shienh 2020年01月25日 186次浏览

原型(Prototype)模式的定义如下:用一个已经创建的实例作为原型,通过复制该原型对象来创建一个和原型相同或相似的新对象。在这里,原型实例指定了要创建的对象的种类。用这种方式创建对象非常高效,根本无须知道对象创建的细节

#include <iostream>
using namespace std;

class AbstractProto{
public:
    virtual  AbstractProto* clone()=0;
};

class CreateProto:public AbstractProto{
public:
    CreateProto(){
        cout<<"CreateProto()"<<endl;
    }
    CreateProto(const CreateProto& proto){
        cout<<"CreateProto(const CreateProto& proto)"<<endl;
    }
    //深拷贝
    AbstractProto* clone(){
        return new CreateProto(*this);
    }
};

int main(int argc, char *argv[])
{
    CreateProto* proto = new CreateProto;
    AbstractProto* proto1 = proto->clone();
    proto->clone();
    return 0;
}