怎样才能开发出好的软件(六)

来源:互联网 发布:增值税地税所得税算法 编辑:程序博客网 时间:2024/05/17 08:19
 

怎样才能开发出好的软件(五) 中讲了一部分行为型设计模式,下面就来分析一下剩下的几个行为型设计模式

 

解释器模式:

        解释器模式就是给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。用了解释器模式就意味着可以很容易的改变和扩展文法。如果一种特定类型的问题发生的频率足够高,那么就值得将该问题的各个实例表述为一个简单语言中的句子,这种情况下就可以构造一个解释器,解释器通过解释这些句子来解决问题。当然解释器模式为文法中的每一条规则至少定义了一个类,因此可能导致文法难以管理和维护。所以当文法非常复杂的时候可以使用其他的技术来处理,如语法分析程序或编译器生成器。

中介者模式:

       中介者模式就是用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显式的相互引用,从而使其耦合松散,而且可以独立的改变它们之间的交互。也就是具体同事类之间不直接通信,而是通过中介者来处理,中介者负责控制和协调一组对象间的交互,以使组中的对象不再相互显示的引用。这个模式很容易在系统中应用,也很容易在系统中误用。当系统出现了‘多对多’交互复杂的对象群时,不要急于使用中介者模式,而要先反思你的系统在设计上是不是合理。所以这个模式一般应用于一组对象以定义良好但是复杂的方式进行通信的场合。

访问者模式:

       访问者模式表示一个作用于某对象结构中的个元素的操作,它使你可以在不改变个元素的类的前提下定义作用于这些元素的新操作。也就是说它将数据结构与作用于这个数据结构上的操作分离开,使得操作集合可以相对自由的演化,它的优点也就是增加新的操作很容易,因为增加一个新的操作就意味着增加一个新的访问者,访问者模式将有关的行为集中到一个访问者对象中。这个模式的缺点是增加新的数据结构比较困难,所以用这个设计模式的前提是系统的数据结构相对稳定。

策略模式:

       策略模式定义了算法家族,分别封装起来,让它们之间可以相互替换,此模式让算法的变化不会影响到使用算法的客户。策略模式是一种定义一系列算法的方法,从概念上来看,所有这些算法完成的都是相同的工作,只是实现不同,他可以以相同的方式调用所有的算法,减少了各种算法类与使用算法类之间的耦合。其实策略模式就是封装了变化点。在实践中,我们可以用它来封装几乎任何类型的规则,只要在分析过程中听到需要在不同时间应用不同的业务规则,就可以考虑使用策略模式来处理了。

备忘录模式:

       备忘录模式是在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样以后就可将该对象恢复到原先保存的状态。 看名字就能知道什么时候用它了,当一个系统功能比较复杂,需要维护或者记录属性历史的时候。命令模式也有类似的撤销作用,如果在某个系统中使用命令模式时,需要实现命令的撤销功能,就可以使用备忘录模式来存储可撤销操作的状态。

迭代器模式:

        迭代器模式提供一种方法顺序访问一个聚合对象中的各个元素,而又不暴露该对象的内部表示。迭代器模式分离了集合对象的遍历行为,抽象出一个迭代器来负责,这样既可以做到不暴露集合的内部结构,又可让外部代码透明的访问集合内部的数据。当你需要访问一个聚集对象,而且不管这些对象时什么都需要遍历的时候,或者对聚集有多种遍历方式的时候,就应该考虑使用迭代器模式了。