Effective C++笔记
Consider alternatives to virtual functions
- 借由Non-Virtual Interface手法实现了Template Method模式
#include <iostream>
using namespace std;
//NVI(Template Method) non-virtual-interface
class Base
{
public:
int health() const
{
//before
int ret = doHealth();
//after
return ret;
}
private:
virtual int doHealth() const
{
return 100;
}
};
class Derived : public Base
{
#if 0
//90
private:
virtual int doHealth() const
{
return 90;
}
#endif // 0
};
int main()
{
Derived d;
cout << d.health(); //100
return 0;
}
- 借由Function Pointers实现Strategy模式
- 借由tr1::function完成Strategy
如果创建ecc1警告,未调用原型函数,则(HealthCalFunc)HealthCalculator()
- 古典的Strategy
总结