UML软件工程组织

探索软件设计模式(二)(2)
作者:Michael Duell 著,Wu 译 本文选自:UlMChina 2002年08月22日

迭代器(Iterator)举例

迭代器提供一种方法顺序访问一个集合对象中各个元素,而又不需要暴露该对象的内部表示。在早期的电视机中,一个拨盘用来改变频道。当改变频道时,需要手工转动拨盘移过每一个频道,而不论这个频道是否有信号。现在的电视机,使用[后一个]和[前一个]按钮。当按下[后一个]按钮时,将切换到下一个预置的频道。想象一下在陌生的城市中的旅店中看电视。当改变频道时,重要的不是几频道,而是节目内容。如果对一个频道的节目不感兴趣,那么可以换下一个频道,而不需要知道它是几频道。

介者(Mediator)举例

中介者模式用一个中介对象来控制一系列的对象交互。通过中介者实现各个对象之间的松散耦合,而不是彼此直接作用。机场的控制塔很好地演示了这种模式。降落或者起飞的飞机直接与塔台通讯,而不是彼此间直接通讯。谁可以起飞或降落是由塔台决定的。这里需要注意的是塔台并不控制整个飞行过程。它只负责飞机在机场附近的区域。



图17:使用训练中心为例子的中介者模式

备忘录(Memento)举例

备忘录模式捕获并且在外部保存一个对象的内部状态,使得以后可以将对象恢复到该状态。这种模式通常体现在你自己修理汽车的刹车时。首先移开两边的挡板,露出左右刹车片。只能卸下一片,这时另一片作为一个备忘录来表明刹车是怎样安装的。在这片修理完成后,才可以卸下另一片。当第二片卸下时,第一片就成了备忘录。



观察者(Observer)模式

观察者定义了对象间一对多的关系,当一个对象的状态变化时,所有依赖它的对象都得到通知并且自动地更新。拍卖演示了这种模式。每个投标人都有一个标有数字的牌子用于出价。拍卖师开始拍卖时,他观察是否有牌子举起出价。每次接受一个新的出价都改变了拍卖的当前价格,并且广播给所有的投标人进行新的出价。



状态(State)模式

状态模式允许一个对象在其内部状态改变时改变它的行为。这种模式可以在自动售货机上观察到。自动售货机的状态包括列商品清单,收款,找钱和选择商品等几种状态。当投入硬币并选择了一个商品时,自动售货机可以完成以下几种操作,包括:送出商品不找钱、送出商品并找钱、由于投币不足不送出商品、由于商品售完不送出商品。



策略(Strategy)模式

策略模式定义了一系列可以相互替换的算法。不同的到飞机场去的方式就是一个策略模式的例子。有几种选择:自己开车、坐出租车、乘机场班车、乘公共汽车或使用专车服务等等。对于某些机场,地铁和直升机也是可能的选择。任何一种方式都可以把你送到机场,它们可以相互代替。你必须根据价格、便利性和时间做出选择。

上一页 下一页



版权所有:UML软件工程组织