条款35:考虑virtual函数意外的其他选择

  1. 使用non-virtual interface手法实现template method模式
    令客户通过public non-virtual成员函数间接调用private virtual函数。与virtual方法相比,该模式可以做一些独特的“事前工作”和“事后工作”。
  2. 使用function pointers实现strategy模式
    • 优点:每个对象可以有自己的健康计算函数;可以在运行期改变其健康计算函数
    • 缺点:可能需要降低类的封装性
  3. 使用tr1::finction完成strategy模式
    允许客户在计算人物健康指数的时候调用任何“可调用物”

你可能感兴趣的:(条款35:考虑virtual函数意外的其他选择)