设计模式总结—行为型

来源:互联网 发布:mdf和ldf恢复数据库 编辑:程序博客网 时间:2024/05/22 14:04

         行为型模式涉及到算法和对象间职责的分配,采用继承机制在类间分配行为,除了描述对象和类的模式,还描述他们之间的通讯方式,行为型模式共包括11种,分别为策略、模板方法、观察者、状态、备忘录、迭代器、命令、职责链、中介者、解释器、访问者模式,类型比较多,也没有找到合适的想法将他们分组,这个总结也是为善始善终找个借口,不过自己以为反复来理解这些模式中的思想和智慧。

1.策略模式:定义了算法家族,分别封装起来,让他们之间可以互相替换,次模式让算法的变化,不会影响到使用算法的客户,所有这些算法完成的都是相同的工作,只是实现不同,它可以以相同的方式调用所有的算法,减少了各种算法类与使用算法类之间的耦合,另外因为每个算法都有自己的类,就可以通过自己的接口单独测试,简化了单元测试。


2.模板方法模式:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中,使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤;当我们要完成在某一个细节层次一致的一个过程或一系列步骤,但其个别步骤在更详细的层次上的实现可能不同时,考虑使用模板方法模式处理,通过把不变行为搬移到超类,去除子类中的重复代码。


3.观察者模式:定义一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象,这个主题对象在状态发生变化时,会通知所有观察者对象,使他们能够自动更新自己,也就是当一个对象的改变需要同时改变其他对象的时候,而且他不知道具体有多少对象有待改变,观察者模式所作的工作其实就是在解除耦合,让耦合的双方都依赖于抽象,而不是依赖于具体,从而使得各自的变化都不会影响另一边的变化。


4.状态模式:当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类,它的好处就是将与特定状态相关的行为局部化,并且将不同状态的行为分割开来,把状态的判断逻辑转移到表示不同状态的一系列类当中,可以把复杂的判断逻辑简化。


5.备忘录模式:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样以后就可将该对象恢复到原先保存的状态。


6.迭代器模式:提供一种方法顺序访问一个聚合对象中各个元素,而又不暴露该对象的内部表示,当需要对聚集有多种方式遍历时可以使用。


7.命令模式:将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化,对请求排队或记录请求日志,以及支持可撤销的操作,他把请求一个操作的对象与知道怎么执行一个操作的对象分隔开。


8.职责链模式:使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系,将这个对象连成一条链,并沿着这条链传递该请求,知道有一个对象处理它为止,这样简化对象的相互连接,它们仅需保持一个指向其后继者的引用,而不需保持它所有的候选接收者的引用,可以随时的增加或修改处理一个请求的结构,增强了给对象指派职责的灵活性。


9.中介者模式:用一个中介对象来封装一系列的对象交互,中介者使各对象不需要显式的相互作用,从而使其耦合松散,而且可以独立的改变他们之间的交互。


10.解释器模式:给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。用了解释器意味着容易的改变和扩展文法,但因为文法中每一条规则至少定义一个类,所以包含许多规则的文法可能难以管理和维护。


11.访问者模式:表示一个作用于某对象结构中的各元素的操作,它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。它的目的是要把处理从数据结构分离出来,这样增加新的操作就会很容易,因为增加新的操作意味着增加爱一个新的访问者,而访问者模式将有关的行为集中到一个访问者对象中。



0 0