隐喻:层与层之间的控制关系与倒车雷达
2011-07-26 16:26
204 查看
隐喻:层与层之间的控制关系与倒车雷达
黄国强 2006-9-27
前一阵子到苏州参加IC China 2006,在回来的路上我突然想起了这个题目。
事情是这样的,在一个路口我们车在等红绿灯的时候过了线,旁边还站了个警察。我们的司机由于忘带驾照,怕引起警察注意而导致不必要的麻烦,就把车往后倒了倒。倒车过程中,车上的倒车雷达叫了起来,司机师傅没管这个。完全依靠自己的判断将车倒了足够的距离。
那么这件事情和层与层之间的控制关系之间有什么联系呢?下面让我细细道来。
在多层架构设计中,位于上层的对象可以访问紧邻他的下层的对象。比如典型的三层式设计中,表示层中的对象可以直接访问商业逻辑层的对象,反之却不可以。层与层的控制关系可以用一个从上层一直指向下层的箭头表示。
万一下层对象需要调用上层的对象怎么办?办法是向上层对象发送消息,发送消息与直接调用的区别在于,对于下层被调用的对象来说调用动作是必须无条件执行的命令。而消息只是建议,上层对象在认为必要的情况下完全可以忽略掉下层消息或延迟执行。关于这点,windows API倒是有一个很明显的例子,SendMessage()和PostMessage()的区别也就在这里。
回到刚才的故事,司机倒车就是一个上层让下层必须执行的动作,而“倒车雷达叫了起来”只是下层向上层发送的消息。司机完全可以不理会。当然,司机必须承担不理会的后果。
黄国强 2006-9-27
前一阵子到苏州参加IC China 2006,在回来的路上我突然想起了这个题目。
事情是这样的,在一个路口我们车在等红绿灯的时候过了线,旁边还站了个警察。我们的司机由于忘带驾照,怕引起警察注意而导致不必要的麻烦,就把车往后倒了倒。倒车过程中,车上的倒车雷达叫了起来,司机师傅没管这个。完全依靠自己的判断将车倒了足够的距离。
那么这件事情和层与层之间的控制关系之间有什么联系呢?下面让我细细道来。
在多层架构设计中,位于上层的对象可以访问紧邻他的下层的对象。比如典型的三层式设计中,表示层中的对象可以直接访问商业逻辑层的对象,反之却不可以。层与层的控制关系可以用一个从上层一直指向下层的箭头表示。
万一下层对象需要调用上层的对象怎么办?办法是向上层对象发送消息,发送消息与直接调用的区别在于,对于下层被调用的对象来说调用动作是必须无条件执行的命令。而消息只是建议,上层对象在认为必要的情况下完全可以忽略掉下层消息或延迟执行。关于这点,windows API倒是有一个很明显的例子,SendMessage()和PostMessage()的区别也就在这里。
回到刚才的故事,司机倒车就是一个上层让下层必须执行的动作,而“倒车雷达叫了起来”只是下层向上层发送的消息。司机完全可以不理会。当然,司机必须承担不理会的后果。
相关文章推荐
- 进程 、进程组、会话、控制终端之间的关系
- PathInfo模式,thinkPHP模板与控制之间的关系
- 进程 、进程组、会话、控制终端之间的关系
- 进程 、进程组、会话、控制终端之间的关系 (转载 http://blog.csdn.net/yh1548503342/article/details/41891047)
- 进程 、进程组、会话、控制终端之间的关系
- java-ssh:逻辑层 控制层 数据层 之间类的关系图解
- IT 治理、IT控制与IT审计之间的关系
- 论IT治理、IT控制、IT审计之间的关系
- js 通过节点之间的关系 控制treeview节点展开
- 进程 、进程组、会话、控制终端之间的关系
- 操作系统与应用程序的关系 操作系统主要可以分为两大部分:内核和内核之外的一些程序。内核就是直接控制最底层的硬件,而我们日常所用到的软件,大都是通过内核之外一些程序与内核之间的接口完成的,例如WINDO
- TCP接收/发送滑动窗口与内核接收/发送缓冲区之间的关系
- Configure,Makefile.am, Makefile.in, Makefile文件之间关系
- 个人拙见之1-- NAS、CIFS、NFS之间的关系
- hibernate中方建立表之间的关系
- tcp协议头窗口,滑动窗口,流控制,拥塞控制关系
- Java过滤器与SpringMVC拦截器之间的关系与区别
- 字节、KB、MB、GB 之间的换算关系 Bps和bps的区别
- DAO,Service,Controller,View层之间的逻辑关系
- ALE,RFC和CPI-C之间的关系(转)