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

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

黄国强 2006-9-27

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

      万一下层对象需要调用上层的对象怎么办?办法是向上层对象发送消息,发送消息与直接调用的区别在于,对于下层被调用的对象来说调用动作是必须无条件执行的命令。而消息只是建议,上层对象在认为必要的情况下完全可以忽略掉下层消息或延迟执行。关于这点,windows API倒是有一个很明显的例子,SendMessage()和PostMessage()的区别也就在这里。
      回到刚才的故事,司机倒车就是一个上层让下层必须执行的动作,而“倒车雷达叫了起来”只是下层向上层发送的消息。司机完全可以不理会。当然,司机必须承担不理会的后果。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

acloud_csu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值