行为型模式小结

 一、定义(definition)

       行为型模式是对在不同的对象之间划分责任和算法的抽象化。行为型模式不仅仅关注类和对象的结构,而且重点关注它们之间的相互作用。通过行为型模式,可以更加清晰地划分类与对象的职责,并研究系统在运行时实例对象之间的交互。行为型模式可以分为类行为型模式和对象行为型模式两种。

二、使用(Use)

     类或对象如何交互及如何分配职责

三、联系(link)

      1.职责链模式 Chain of Responsibility :使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。

      2.命令模式 Command :将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;可以对请求排队或记录请求日志,以及支持可撤销的操作。

      3.解释器模式 Interpreter:给定一个语言,定义它的问法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。

      4.迭代器模式 Iterator :提供了一种方法顺序访问一个聚合对象中各个元素,而又不需要暴露该对象的内部表示。当我们需要对聚集有多种方式遍历时,可以考虑用迭代器模式。迭代器模式提供“开始、下一个、是否结束、当前哪一项…”等统一的接口。

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

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

      7.观察者模式 Observer :定义了对象间的一种一对多的依赖关系,当一个对象的状态发生变化时,所有依赖它的对象都会得到通知,并被自动更新,

      8.状态模式 State :允许一个对象在其内部状态改变时改变它的行为,让对象看起来似乎修改了它的类。

      9.策略模式 Strategy :定义一系列的算法,把它们一个个封装起来,并且使它们可以相互替换。本模式使得算法的变化不会影响到使用算法的客户。

      10.模板方法模式 Template Method :定义一个操作的算法骨架,而将一些步骤延迟到子类中,模版方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。

      11.访问者模式 Visitor:  表示一个作用于某对象结构中的个各原色的操作。它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。

四、区别(distinguish)

1、策略模式与模版方法

策略模式模板方法使用继承来改变算法的一部分。Strategy使用委托来改变整个算法。模板方法模式与策略模式的作用十分类似,有时可以用策略模式替代模板方法模式。模板方法模式通过继承来实现代码复用,而策略模式使用委托,把不确定的行为集中到一个接口中,并在主类委托这个接口。委托比继承具有更大的灵活性。

2、观察者模式于中介者、单例

1) 中介者模式Mediator: 通过封装复杂的更新语义 , ChangeManager充当目标和观察者之间的中介者。

2) 单例模式Singleton: ChangeManager可使用Singleton模式来保证它是唯一的并且是可全局访问

的。

3、状态模式与职责链

状态模式:

 相当于If else if else;

 设计路线:各个State类的内部实现(相当于If,else If内的条件)

 执行时通过State调用Context方法来执行。

职责链模式:

 相当于Swich case

 设计路线:客户设定,每个子类(case)的参数是下一个子类(case)。

 使用时,向链的第一个子类的执行方法传递参数就可以。

区别就是状态模式是让各个状态对象自己知道其下一个处理的对象是谁,而职责链模式中的各个对象并不指定其下一个处理的对象到底是谁,只有在客户端才设定。

4、状态模式于策略模式

        在状态模式中,状态的变迁是由对象的内部条件决定,外界只需关心其接口,不必关心其状态对象的创建和转化;而策略模式里,采取何种策略由外部条件(C)决定。

        他们应用场景(目的)却不一样,State模式重在强调对象内部状态的变化改变对象的行为,Strategy模式重在外部对策略的选择,策略的选择由外部条件决定,也就是说算法的动态的切换。但由于它们的结构是如此的相似,我们可以认为“状态模式是完全封装且自修改的策略模式”。即状态模式是封装对象内部的状态的,而策略模式是封装算法族的

5、迭代器与组合、备忘录、工厂方法关系

1)组合:迭代器常被应用到象复合这样的递归结构上。

2)工厂方法:多态迭代器靠Factory Method来例化适当的迭代器子类。

3)备忘录:常与迭代器模式一起使用。迭代器可使用一个 Memento来捕获一个迭代的状态。迭代器在其内部存储Memento。

6、命令模式与备忘录

      备忘录Memento模式可用来保持某个状态,命令用这一状态来取消它的效果。在被放入历史表列前必须被拷贝的命令起到一种原型的作用。

7、中介者模式与外观、观察者模式

1)外观模式,Facade与中介者的不同之处在于它是对一个对象子系统进行抽象,从而提供了一个为方便的接口。它的协议是单向的,即Facade对象对这个子系统类提出请求,但反之则不。相反,Mediator提供了各Colleague对象不支持或不能支持的协作行为,而且协议是多 向。

2)Colleague可使用Observers模式与Mediator通信。

相关文章
相关标签/搜索