整洁度与效率的难以抉择出现在以下这种情况:
class Base
{
protected:
int a,b,c;
public:
virtual void Do()
{
a = c;
Update();
}
private:
void Update()
{
//Some important behaviours.
}
//Limited...
}
class ChildOne : public Base
{
public:
void Do()
{
Base::Do();
a = b;
}
//Limited...
}
如上面的这种情况,
ChildOne是Base的一个子类,
不过Base除了这个它还有其他100个子类。
其他的子类都可以完美地调用Base::Do()——说明基类虚函数的必要性。
但是对ChildOne而言,
基类虚函数Do中的第一步却是多余的,但第二步却又不能省略。
在这种情况下,有何种更巧妙的解决方案呢?
这里暂且按下不表,
待我读完Refactoring And Patterns之后再来回顾此文。
(当然,
这里的"多余操作"是泛指,
并不仅仅只是赋值,
还有很多其他更占用内存,耗资源的操作。)