当前位置: 首页 > news >正文

杭州响应式网站案例零基础自学设计

杭州响应式网站案例,零基础自学设计,网站做的和别人一样违法吗,北京专业企业网站建设今天在看文章的时候遇到了multiple dispatch这个术语。看看了wiki#xff0c;写得云里雾里。最后搜了搜资料#xff0c;基本上搞清楚了。 multiple dispatch的混淆之处在于其和object system结合在一起。当然wiki上写得很清楚#xff1a;“a function or method can be dyna…今天在看文章的时候遇到了multiple dispatch这个术语。看看了wiki写得云里雾里。最后搜了搜资料基本上搞清楚了。 multiple dispatch的混淆之处在于其和object system结合在一起。当然wiki上写得很清楚“a function or method can be dynamically dispatched based on the run time (dynamic) type of more than one of its arguments.”。这摆明了就是和object system紧耦合在了一起。更准确地来讲multiple dispath其实就是专门针对OO中的消息通信的一个概念。与之相关的概念还有single dispatch和dynamic dispatch。 如 果不考虑object system我觉得function overloading也可以算是一种multiple dispatch。function overloading需要根据参数的类型以及个数来决议调用函数过程上来讲和multiple dispatch的定义很像都是通过参数类型来决定调用函数。但是有一个很重要的不同点multiple dispatch是runtime行为而function overloading是编译器在compile-time时就决议好了。 要彻底理解multiple dispatch还要从OO的定义说起OO其实就是对象以及对象间的通信。C对于对象间的通信采用了函数调用的方式这与objective-c有点区别。C的通信方式可以简单地以object.method()的方式呈现。method其实就是信息object.method()的意思就是method这个信息被派发给了object。这就是所谓有single dispatch因为信息只能被派发给一个对象。 先举一个简单的例子。有一个状态机会接受种不同的trigger每个trigger要触发当前状态下的一个动作。 class AbstractTrigger; class AbstractState { public:virtual void AcceptTrigger( AbstractTrigger* _trigger ) 0; };class AbstractTrigger {/*....*/ }; class State1 : public AbstractState{public:  void AcceptTrigger( AbstractTrigger* _trigger )  {    /*....*/  }}; class Trigger1 : public AbstractTrigger {   /*....*/ }; 目前的难点在于如何根据trigger的类型来选择合适的动作。一种可行的方法是在State1::AcceptTrigger中判断_trigger的实际类型然后再根据类型去执行相应的动作。这种作法属于过街老鼠式的做法code review八成是过不去的。另外一种做法是采用visitor pattern的做法代码如下 class AbstractTrigger; class Trigger1; class AbstractState { public:virtual void AcceptTrigger( AbstractTrigger* _trigger ) 0;virtual void Action1( void ) 0; };class AbstractTrigger { public:virtual void Action( AbstractState* _state ) 0; };class State1 : public AbstractState {void AcceptTrigger( AbstractTrigger* _trigger ){_trigger-Action }void Action1( void ){/*....*/} };class Trigger1 : public AbstractTrigger { public:void Action( AbstractState* _state ){_state-Action1();} }; 我们在AbstractState中声明了纯虚函数Action1子类实现它以完成Trigger1时的动作。当然也可以加入Action2, Action3 ... ActionN分别对应Trigger2, Trigger3 ... TriggerN。在State1::AcceptTrigger中将_trigger派发给了Trigger1再由Trigger1去调用State1::Action1。之所以整个调用过程做得如此复杂原因在于State1知道怎么做但是不知道做哪些而Trigger知道做哪些却不知道怎么做。简言之在运行时要做哪个动作是由State1和Trigger1两个对象同时决定的缺一不可。而在中一个消息只能同时发给一个对象在程序需要发消息给多个对象的时候只能一个一个地去遍历。Lisp有可以把一个消息同时发给多个对象的能力这种能力就叫做multiple dispatch。 上面的示例代码也可以叫做double dispatch在wiki上有详细的解释。 参考资料 ultiple DispatchMultiple Dispatch Wiki转载于:https://www.cnblogs.com/hughlo/archive/2013/05/28/3100830.html
http://wiki.neutronadmin.com/news/156152/

相关文章:

  • 给传销做网站石家庄网站做网站
  • 网站维护费一年多少钱浙江十大外贸公司排名
  • 徐水网站建设东莞市住房和城乡建设局门户网站
  • 网络专业的网站建设价格小白学编程应该从哪里开始学
  • 小说网站开发 公司邢台网络公司网站建设
  • 重庆做网站 帮助中心网址wordpress主题
  • 莆田市城厢区建设局网站龙岩市住房和城乡建设局网站
  • 网站设置在设备之间共享什么意思网络营销的含义是什么
  • dedecms 安防监控行业网站模板发布信息的网站
  • 宁波网站制作计划wordpress 热门搜索
  • 网站数据分析国外优秀论文网站
  • 万站网自己怎么做微网站
  • 电子商务网站建设与管理公司 网站 方案
  • 怎么判断一个网站做的好不好专科函授网页设计实训报告
  • 网站模板修改软件寻找锦州网站建设
  • 网站设计标准字体wordpress关闭多站点
  • 四川网站建设设计科技类网站
  • 上海网站制作公司多少钱科丰化工东莞网站建设
  • php企业网站整站源码杂志社网站模板
  • 仙游网站建设广东富盈建设有限公司企业网站
  • 怎么用ftp管理网站html手机网站模板下载
  • 佛山网站建设技术托管wordpress 中文api
  • 东莞企业网站电话企业邮箱在哪查看
  • wordpress评论模板制作seo如何使用wordpress优化
  • 成都广告公司排行榜台州seo网站推广费用
  • 广东高端网站设计公司价格.net开发的网站 能做成app吗
  • 网站常用图标素材免费添加地图上的定位
  • 温州建站软件网站模板设计师要求
  • 网站步骤创建网站能赚钱吗
  • 十大网站排行榜西安网站建设联系方式