我正在学习原型设计模式,我对这个模式的主要思想以及何时使用它感到有点困惑。你能帮我澄清几点吗?
1)如果从这个discussion中得到正确的结果,原型模式的主要思想是节省创建新对象的成本(注意,这并不意味着内存分配)。有时,要创建对象,您需要从某个地方(例如DB请求)或一些大型计算中请求数据,这可能很费时,因此,与创建新对象相比,克隆它更有效。因此,原型模式的主要思想不是节省内存分配,而是创建对象,因为它可能是数据驱动的,也可能是计算的结果。如果我错了,请纠正我。
( 2)这个代码是原型设计模式c++实现的好例子吗?
// Prototype
class Prototype
{
public:
virtual ~Prototype() { }
virtual Prototype* clone() const = 0;
};
// Concrete prototype
class ConcretePrototype : public Prototype
{
private:
int m_x;
public:
ConcretePrototype(int x) : m_x(x) { }
ConcretePrototype(const ConcretePrototype& p) : m_x(p.m_x) { }
virtual Prototype* clone() const
{
return new ConcretePrototype(*this);
}
void setX(int x) { m_x = x; }
int getX() const { return m_x; }
void printX() const { std::cout << "Value :" << m_x << std::endl; }
};
// Client code
void prototype_test()
{
Prototype* prototype = new ConcretePrototype(1000);
for (int i = 1; i < 10; i++) {
ConcretePrototype* tempotype =
dynamic_cast<ConcretePrototype*>(prototype->clone());
tempotype->setX(tempotype->getX() * i);
tempotype->printX();
delete tempotype;
}
delete prototype;
}提前感谢您的时间和努力。
发布于 2015-10-21 20:11:12
ID 社会保险文件
这张单子可以很大很安静。为了创建帐户,我提供了这些数据。因此,当我需要一些新的帐户时,不需要提供所有这些信息。银行可以复制数据。因此,原型设计模式的主要目标是节省创建新对象的成本。因此,原型模式的主要思想不是节省内存分配,而是创建对象,因为它可能是数据驱动的,或者是计算的结果,或者保存了一些阶段信息。
https://stackoverflow.com/questions/33083700
复制相似问题