我有一个抽象类Figure
和一些派生类:Circle
, Square
, ...
类图实现:
private:
virtual double varea()=0;
double multiplier;
public:
virtual Figure * clone()=0;
double area() { return varea()*multiplier; }
以 Square 为例,这些数字的行为如下:
private:
double L;
public:
virtual Figure * clone() {return new Square(*this);}
virtual double varea() {return L*L;}
调用方法克隆时,我很难分配变量乘数。实现这一目标的最佳方法是什么?当然这只是一个愚蠢的例子,有很多变通方法,但实际上,有多个推导级别,它们并不那么明显,所以请坚持这个模式。
我是否应该为方法克隆也使用虚拟接口?通过这种方式,我可以直接在 Figure 类中分配乘数,而无需让每个图形知道其乘数。