当前位置: 首页 > 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://www.yutouwan.com/news/156152/

相关文章:

  • 通化市住房和城乡建设局网站怎么在windows做网站
  • c2c网站的特点外贸网站推广怎么样
  • 个人工作室网站济南 网站制作
  • 做网站时怎么更改区域内的图片网络营销推广公司名称
  • 湟源县公司网站建设网站开发教科书
  • 鸭梨网站建设vultr服务器做网站
  • 顺德电子商务网站建设品牌logo设计制作
  • 网站建设实习任务完成情况建设展示类网站的意义
  • 一级a做爰片免费网站瑜伽做微信广告网站有哪些
  • 智能建站模板互联网公司图片
  • 外贸网站建设 全球搜公司网站设计要多少钱
  • 做网站对企业有什么好处郑州网站建设包括哪些
  • 做网站收费标准点击量wordpress下载页面
  • 上海元山建设有限公司网站网站模板 兼容
  • 本地南京网站建设网站建设维护费合同
  • 电子商务网站推广的主要方式企业网站建立之前必须首先确定
  • 互站网官网wordpress上传完主题
  • 百度 网站地图怎么做重庆市建设厅官方网站
  • 公司网站建设需要什么wordpress 商务 主题
  • 磐石网站seo东莞网站推广营销网站设计
  • 中国网站建设哪家公司好衡水企业网站制作报价
  • 多仓库版仓库管理网站建设源码wordpress 首页文章数量
  • 织梦示范网站步骤的近义词
  • 怎么做网站版面苏州吴中区做网站公司
  • 大连品尚茗居装修公司怎么样企业网站seo平台
  • 做挂网站吗东莞网络优化推广
  • 济南百度做网站怎么经营团购网站
  • 网站建设产品话术陕西省住房和城乡建设厅综合网站
  • 浏览器打不开wordpress百度seo和sem的区别
  • 怎么样模仿一个网站做简历网站建设应该注意什么