原型模式
看这个模式的第一感觉,这并不是一个高大上的设计模式,而是规范化代码的一个小技巧。
原型模式是通过指定实例,通过拷贝来创建新的对象。在C++中,原型模式是通过提供clone接口和重写拷贝构造函数(深拷贝)来实现的。
class prototype
{
public:
prototype(){}
virtual ~prototype(){}
virtual prototype* clone() = 0;//纯虚函数,需要供继承者自行实现
};
// 派生自Prototype,实现Clone方法
class concreateprototype1:public prototype
{
public:
concreateprototype1(){}
concreateprototype1(const concreateprototype1&){}
virtual ~concreateprototype1(){}
virtual prototype* clone(){return new concreateprototype1(*this);}
};
// 派生自Prototype,实现Clone方法
class concreateprototype2:public prototype
{
public:
concreateprototype2(){}
concreateprototype2(const concreateprototype2&){}
virtual ~concreateprototype2(){}
virtual prototype* clone(){return new concreateprototype2(*this);}
};
int main()
{
concreateprototype1 c1;
prototype *p1 = c1.clone();
concreateprototype2 c2;
prototype *p2 = c2.clone();
}
一般在C++的书籍中会介绍深浅拷贝的概念,有了这个概念去理解这个模式是非常简单的。