这次我们来讲一下原型模式。总体来讲原型模式还是比较简单的。
意图
用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。
结构图
这个结构图还是挺简单的,Prototype就是产品类。
和前面的抽象工厂,工厂方法等模式相比,产品类就增加了一个函数Clone()。
我们还是以之前的地形例子来讲解这个模式,先给出类图
我这次把CFactory当作原型模式的client。
先看看产品类的实现:
class CComponent
{
public:
virtual void LoadPicture() = 0;
virtual CComponent* Clone() = 0;
};
class CSnowBackground: public CComponent
{
public:
virtual void LoadPicture()
{
std::cout<< "Load snow background picture \n";
}
virtual CComponent* Clone()
{
CComponent* clone = new CSnowBackground();
return clone;
}
};
class CSnowGround: public CComponent
{
public:
virtual void LoadPicture()
{
std::cout&