原型模式的目的是:以现有对象为原型,通过深拷贝创建一个新对象。

先来看看模式图。

原型模式本质上就是深拷贝问题的解决方案——通过定义一个克隆接口,以已有对象为原型,构造出一个新对象。


class ProtoType
{
public:
	virtual Product*Clone() = 0;

};


class Product:public ProtoType
{
public:
	string _name = "A";

	virtual Product*Clone()override
	{
		Product*ret = new Product;
		ret->_name = this->_name;
		return ret;
	}
};



int main(int argc, char *argv[])
{

	Product* a = new Product;
	Product *b = a->Clone();
	system("pause");
	return 0;
}