在原型设计模式中,抽象基类的克隆方法实现如下
/* From Wikipedia */
class Prototype
{
public:
virtual ~Prototype() { }
virtual Prototype* clone() const = 0;
};
class ConcretePrototype : public Prototype
{
...
virtual ConcretePrototype* clone() const
{
return new ConcretePrototype(*this);
}
};
客户端创建一个对象,然后调用 clone() 方法创建该对象的副本
new ConcretePrototype(*this) 是否比 new ConcretePrototype( ) 便宜?