您的位置:首页 > 其它

隐喻:层与层之间的控制关系与倒车雷达

2011-07-26 16:26 204 查看
隐喻:层与层之间的控制关系与倒车雷达
黄国强 2006-9-27
前一阵子到苏州参加IC China 2006,在回来的路上我突然想起了这个题目。
事情是这样的,在一个路口我们车在等红绿灯的时候过了线,旁边还站了个警察。我们的司机由于忘带驾照,怕引起警察注意而导致不必要的麻烦,就把车往后倒了倒。倒车过程中,车上的倒车雷达叫了起来,司机师傅没管这个。完全依靠自己的判断将车倒了足够的距离。
那么这件事情和层与层之间的控制关系之间有什么联系呢?下面让我细细道来。
在多层架构设计中,位于上层的对象可以访问紧邻他的下层的对象。比如典型的三层式设计中,表示层中的对象可以直接访问商业逻辑层的对象,反之却不可以。层与层的控制关系可以用一个从上层一直指向下层的箭头表示。

万一下层对象需要调用上层的对象怎么办?办法是向上层对象发送消息,发送消息与直接调用的区别在于,对于下层被调用的对象来说调用动作是必须无条件执行的命令。而消息只是建议,上层对象在认为必要的情况下完全可以忽略掉下层消息或延迟执行。关于这点,windows API倒是有一个很明显的例子,SendMessage()和PostMessage()的区别也就在这里。
回到刚才的故事,司机倒车就是一个上层让下层必须执行的动作,而“倒车雷达叫了起来”只是下层向上层发送的消息。司机完全可以不理会。当然,司机必须承担不理会的后果。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: