七、大话设计模式之原型模式

GOOD:  从一个对象再创建另外一个可定制的对象,  而无需知道任何创建的细节。并能提高创建的性能。 说白了就 COPY 技术,把一个对象完整的 COPY 出一份。

七、大话设计模式之原型模式_第1张图片

源代码:

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 :public Prototype
{
public:
	ConcretePrototype1(string strName):Prototype(strName){}
	ConcretePrototype1(){}

	virtual Prototype* Clone()
	{
		ConcretePrototype1 *p = new ConcretePrototype1();
		*p =*this;
		return p;
	}
};

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("小王");
	ConcretePrototype2* test2 = (ConcretePrototype2*)(test->Clone());
	test->Show();
	test2->Show();
	system("pause");
    return 0;
}

运行结果:

七、大话设计模式之原型模式_第2张图片

你可能感兴趣的:(设计模式)