原型(Prototype)模式的定义如下:用一个已经创建的实例作为原型,通过复制该原型对象来创建一个和原型相同或相似的新对象。在这里,原型实例指定了要创建的对象的种类。用这种方式创建对象非常高效,根本无须知道对象创建的细节
#include <QCoreApplication>
#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[])
{
QCoreApplication a(argc, argv);
CreateProto* proto = new CreateProto;
AbstractProto* proto1 = proto->clone();
proto->clone();
return a.exec();
}