再论双分派

原创 2007年09月20日 19:20:00

暴力双分派速度快,可是当类增多时,代价依然很大。

map双分派在速度优化上有dynamic_cast和static_cast两种选择,Loki把这个选择做成了Policy。

矩阵双分派速度上有天然的优势,但是你要修改你的类。于是Loki也把这个做成了Policy供你选择。

矩阵双分派的思想是,在你的class里保存分配器使用的一个id值,分配器可以随时获取或者设置它。分派器操作此值构造矩阵,这样双分派变成了二维平面上的Point找寻,而且这个点的x、y标你都知道,这是可以的最快的分派查询方式了。

map双分派使用了局部类的思想可以和仿函数有机结合在一起。你可以保存函数的状态。

再论双分派,我想说点于双分派外得到的东西。

暴力双分派给我们的启示是template给我们了一个驱动编译器的工具,你可以使用if-else和递归让编译器帮你生成代码。

map双分派告诉我们对局部类的使用方式,它还给我们一次使用C++编译器开发者常用但我们不常用的技术(局部类)的机会,了解这些对你使用C++有很大的帮助。

矩阵双分派的思想不难想到,技术也常用,但是它的难度在于第一个想到这么做的人如何思考的。

三种双分派策略组合到库里的时候,Loki又向你展示了Policy的作用和效果。

关于Policy,我觉得它给我的其实很多。一直以来,我都讨厌被写成很大的类,它不便阅读,自然维护性非常差,而且我总认为这样做是在借助C++的封装做C的事情,C中遇到的问题你都会遇到,因为你的类足够大了。

但是,有事拆分一个类同样很难,至少很多时候我不知道如何做决定,在类庞大了,维护不方便的时候才想起来其实以前该拆分的,但这个时候已经很晚了。Policy给了我一个提示。你可以组装,运用模板或者继承,对原件的维护就是对一个小类的维护,这样会好很多。是的,看懂、维护组装关系一样会在Policy多的时候成为问题,但是,其一,你有选择的自由,其二,这至少使得问题可以得到解决。

(二十二)访问者模式详解(伪动态双分派)

作者:zuoxiaolong8810(左潇龙),转载请注明出处,特别说明:本博文来自博主原博客,为保证新博客中博文的完整性,特复制到此留存,如需转载请注明新博客地址即可。              ...

5.1Java模拟 双分派(Double Dispatch)

应用命令模式,在Java中模拟双分派。
  • yqj2065
  • yqj2065
  • 2014年08月31日 14:41
  • 2416

创建工厂和双分派工厂

/******************************************************************** file name : Factory.h au...

Visitor模式-数据主体需要稳定/相互关联三部分组成实现双分派或多分派

Visitor模式也是相互关联的,涉及到三个部分     第一个部分是数据元素部分必须是一个稳定的结构,抽象出来的接口Accept方法是给ObjectStruct使用的,关联了访问者模式的抽象方法,不...

(二十二)访问者模式详解(伪动态双分派)

本次LZ和各位分享一下访问者模式,从场景、设计初衷以及实现方面来说,访问者模式算是LZ即将写到的24种设计模式当中,最复杂也是最难理解的一个设计模式。...

(二十二)访问者模式详解(伪动态双分派)

作者:zuoxiaolong8810(左潇龙),转载请注明出处,特别说明:本博文来自博主原博客,为保证新博客中博文的完整性,特复制到此留存,如需转载请注明新博客地址即可。              ...

也谈double dispatch(双分派)::Visitor 模式(转)

原文地址:http://blog.chinaunix.net/uid-17102734-id-2830082.html        在《GoF 23种设计模式模式解析附C++实现源码》和《设计模式...

一个Delphi分派程序演示

  • 2010年07月20日 10:21
  • 11KB
  • 下载

bug分派划分

  • 2015年05月18日 10:45
  • 12KB
  • 下载

【深入Java虚拟机】之五:多态性实现机制——静态分派与动态分派

转载请注明出处:http://blog.csdn.net/ns_code/article/details/17965867 方法解析     Class文件的编译过程中不包含传...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:再论双分派
举报原因:
原因补充:

(最多只允许输入30个字)