定义:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。
原型模式其实就是从一个对象再创建另外一个可定制的对象,而且不需要知道任何创建的细节。
原型模式主要考虑的深复制与浅复制,在c++的类设计中,拷贝构造函数就是浅复制,当重载赋值运算符时就是深复制。
浅复制:被复制对象的所有变量都含有原来的对象相同的值,而所有的对其他对象的引用都仍然指向原来的对象。
深复制:把引用对象的变量指向复制过的新对象,而不是原有的被引用的对象。
测试用例:
[code]int main(){
//生成对象
ConcretePrototype * conProA = new ConcretePrototype();
//复制自身
ConcretePrototype *conProB = conProA->Clone(); //先clone后调用拷贝构造函数, Output: clone constructor
delete conProA;
conProA = NULL;
delete conProB;
conProB = NULL;
return 0;
}原型模式(Prototype)实现
[code]//接口
class Prototype{
public:
Prototype(){}
virtual ~Prototype(){}
virtual Prototype *Clone() = 0;
};
//实现
class ConcretePrototype: public Prototype{
public:
ConcretePrototype(): m_counter(0) {}
virtual ~ConcretePrototype(){}
//拷贝构造函数
ConcretePrototype(const ConcretePrototype &rhs){
std::cout << "constructor\n";
m_counter = rhs.m_counter;
}
//复制自身
virtual ConcretePrototype *Clone(){
//调用拷构造函数
std::cout << "clone\n";
return new ConcretePrototype(*this);
}
private:
int m_counter;
};以上就是C++设计模式浅识原型模式的内容,更多相关内容请关注PHP中文网(www.php.cn)!
HTShop网上购物系统由恒天网络科技有限公司根据国际先进技术和国内商务特点自主版权开发的一款具有强大功能的B2C电子商务网上购物平台。HTShop以国际上通用流行的B/S(浏览器/服务器)模式进行设计,采用微软公司的ASP.NET(C#)技术构建而成。 2007-11-10 HTShop CS 通用标准版 v1.1.11.10 更新内容自由更换模版功能开放 修改了购买多款商品,会员中心订单只显示










