第九章-原型模式

原型模式(Prototype): 用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。

图片

原型模式其实就是从一个对象创建另外一个可定制的对象,而且不需要知道任何创建的细节。

原型模式基本代码

#include<iostream>
#include<string>

using namespace std;

//抽象基类
class Prototype
{
private:
	string m_strName;
public:
	Prototype(string strName) { m_strName = strName; }
	Prototype() { m_strName = " "; }
	void Show()
	{
		cout << m_strName << endl;
	}
	virtual Prototype* Clone() = 0;
};

// class ConcretePrototype1 
class ConcretePrototype1 : public Prototype
{
public:
	ConcretePrototype1(string strName) : Prototype(strName) {}
	ConcretePrototype1() {}

	virtual Prototype* Clone()
	{
		ConcretePrototype1 *p = new ConcretePrototype1();
		*p = *this; 						//复制对象 
		return p;
	}
};

// class ConcretePrototype2 
class ConcretePrototype2 : public Prototype
{
public:
	ConcretePrototype2(string strName) : Prototype(strName) {}
	ConcretePrototype2() {}

	virtual Prototype* Clone()
	{
		ConcretePrototype2 *p = new ConcretePrototype2();
		*p = *this; //复制对象 
		return p;
	}
};



//客户端
int main()
{
	ConcretePrototype1* test = new ConcretePrototype1("小王");
	ConcretePrototype1* test2 = (ConcretePrototype1*)test->Clone();
	test->Show();
	test2->Show();

	system("pause");
	return 0;
}


浅拷贝和深拷贝 详细见《大话数据结构》第9章

posted @ 2019-12-06 16:28  微风吹过165  阅读(71)  评论(0编辑  收藏  举报