1、使用Non-Virtual Interface 实现方法模版

  将虚方法声明为private,子类重写private的虚方法,在父类中通过public方法调用虚方法。NVI的优点是:可以在虚方法之前和之后做一些事情。

2、使用方法指针实现策略模式

  在类中关联一个方法指针,方法指针的形参是类对象的引用。实例化一个对象的时候,把一个方法传递给对象,这就意味着每个对象都有一个方法。这种方式提供了一些有趣的弹性:a、同一类型的不同对象可以有不同的计算方法;b、在运行期可以更改对象的计算方法。这种方式的缺点是:计算方法不能访问protected成员,要解决这个问题,只能弱化类的封装。

3、使用tr1::function 实现策略模式

  可以认为function对方法指针进行了优化,function是泛型的方法指针,function可以指向functor,可以指向成员方法,可以指向兼容于function的方法。

4、古典的策略模式

  类型建立一个继承结构,functor建立一个继承结构。

最新文章

  1. Atitit 多继承实现解决方案 java c#
  2. LinkedHashMap及其源码分析
  3. SQL常见错误及处理方法
  4. Print all nodes at distance k from a given node
  5. Rails,uva 514
  6. spring日记------部署环境、写demo
  7. 【读书笔记《Android游戏编程之从零开始》】17.游戏开发基础(游戏适屏的简述和作用、让游戏主角动起来)
  8. [转]Android在初始化时弹出popwindow的方法 .
  9. 练习SignalR使用
  10. c++子类和父类成员函数重名
  11. HQL连接查询和注解
  12. 【BZOJ1305】跳舞(网络流)
  13. js 判断元素(例如div)里的数据显示不全(数据长度大于元素长度)
  14. vue关于为空使用默认值
  15. TestNG源代码分析:依赖管理的实现
  16. 用css写出下拉框(代码转自wq群)
  17. MySQL--修改普通表为自增表
  18. Linux gprof命令
  19. [转]Shared——探究react-native通信机制
  20. Deepin Linux安装MySQL方法

热门文章

  1. node安装插件方法
  2. 第二部分 overlay 架构初探
  3. many-to-one和one-to-many的配置比较
  4. 弹出框页面中使用jquery.validate验证控件
  5. input之placeholder与行高的问题。
  6. PHP简单下载
  7. POJ 2352 Stars
  8. [转] ArcEngine中打开各种数据源(WorkSpace)的连接
  9. HDU 3335 Divisibility dancing links 重复覆盖
  10. C++模拟键盘鼠标消息