行为型模式(一)

观察者模式:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所依赖于它的对象都将得到通知并自动更新。

  具体对象之间,相互知道的越少越好,这样发生改变时才不至于相互影响。

  目标和观察者之间不是紧密耦合的,它们可以属于一个系统中的不同抽象层次,目标知道的仅仅是它有一些列的观察者,每个观察者实现Observer的简单接口,观察者属于哪个具体类,目标是不知道的。

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

  模板模式由一个抽象类组成,这个抽象类定义了需要覆盖的可能有不同实现的模板方法,每个从这个抽象类派生的具体类将为此模板实现新方法。

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

  请求发送者和具体实现者分离:将调用操作的对象与知道如何实现该操作的对象解耦。可以在不同时刻指定、排列和执行请求。

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

  分支条件大量运用的问题:不会变化和不用扩展的软件很少,那么如果把这样的分支语句进行分解并封装成多个子类,利用多态来提高其可维护、可扩展的需要、是非常重要的。

  状态模式提供了一个更好的办法来组织与特定状态相关的代码,决定状态转移的逻辑不在单块的if或switch中,而是分布在各个状态子类之间,由于所有与状态相关的代码都存在于某个状态子类中,所以通过定义新的子类可以很容易地增加新的状态和转换。

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

  有多个对象可以处理同一个请求,哪个对象处理该请求事先并不知道,要在运行时刻自动确定,此时最好的办法就是让请求发送者和具体请求者分离,让客户在不明确指定接收者的情况下,提交一个请求,然后由所有能处理这请求的对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。

 

posted on 2019-01-17 09:29  书生游  阅读(205)  评论(0编辑  收藏  举报