zoukankan      html  css  js  c++  java
  • 行为型模式

    1) 观察者模式

     

    定义:定义了一种一对多的依赖关系,让多个观察者对象 同时监听某一个主题对象。这个主题对象在状态发生变化时, 会通知所有观察者对象,使它们能够自动更新自己。

    绘图:

     

    场景:

    附注:

    Subject可翻译为主题或抽象通知者,一般用一个抽象类或者一个接口实现。它把所有对观察者 对象的引用保存在一个聚集里,每个主题都可以有任何数量的观察者。抽象主题提供一个接口,可以增 加和删除观察者对象。

    Observer抽象观察者,为所有的具体观察者定义一个接口,在得到主题的通知时更新自己。这 个接口叫做更新接口。抽象观察者一般用一个抽象类或者一个接口实现。更新接口通常包含一个 方法,这个方法叫做更新方法。

    ConcreteSubject叫做具体主题或具体通知者,将有关状态存入具体现察者对象;在具体主题的 内部状态改变时,给所有登记过的观察者发出通知。具体主题角色通常用一个具体子类实现。

    ConcreteObserver具体观察者,实现抽象观察者角色所要求的更新接口,以便使本身的状态与 主题的状态相协调。具体观察者角色可以保存一个指向具体主题对象的引用。具体观察者角色通常用一个具体子类实现。

     

    将一个系统分割成一系列相互协作的类有一个很不好的副作用,那就是需要维护相关对 象间的一致性。我们不希望为了维持一致性而使各类紧密耦合,这样会给维护、扩展和重用都带来不便。而观察者模式的关键对象是主题和观察者可以有任意数目的依赖。它的Observer,一旦Subject的状态发生了改变,所有的都可以得到通知。Subject发出通知时 并不需要知道谁是它的观察者,也就是说,具体观察者是谁,它根本不需要知道。而任何一个具体观察 者不知道也不需要知道其他观察者的存在。

     

    代码:见附录。(需要手工处理,进Eclipse编译最佳!

     

    2) 策略模式 Strategy

     

    定义:定义了算法家族,分别封装起来,让 它们之间可以互相替换,此模式让算法的变化,不会影响到使 用算法的客户。

     

    绘图:

     

    场景:

    附注:

    策略模式是一种定义一系列算法的方法,从概念上来看,所有这些 算法完成的都是相同的工作,只是实现不同,它可以以相同的方式调用所有的算法,减少了各种算法类 与使用算法类之间的耦合。

    策略模式的5的快歡类层次为定义了一系列的可供重用的算法或行为。继承有助于析取出这些算法中的公共功能【0?】。对于打折、返利或者其他的算法,其实都是对实际商品收费的一种汁算 方式,通过继承,可以得到它们的公凡功能,

     

    策略模式与简单工厂的比较

    如果外部,不论是所谓的Context还是client持有一个引用,那么是否可以认为该引用在模式中一定是一个抽象类,而不能是接口(否则无法实例化?)

     

    代码:见附录。(需要手工处理,进Eclipse编译最佳!

     

    3) 状态模式 State

     

    定义:当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类。

    绘图:

     

    场景:

    附注:

    代码:见附录。(需要手工处理,进Eclipse编译最佳!

     

    4) 命令模式 Command

     

    定义:

    绘图:

     

    场景:

    附注:

    代码:见附录。(需要手工处理,进Eclipse编译最佳!

  • 相关阅读:
    JavaScript中的闭包
    SQL 备忘
    SqlServer 2005 升级至SP2过程中出现"身份验证"无法通过的问题
    unable to start debugging on the web server iis does not list an application that matches the launched url
    Freebsd 编译内核
    Freebsd 6.2中关于无线网络的设定
    【Oracle】ORA01219
    【Linux】Windows到Linux的文件复制
    【Web】jar命令行生成jar包
    【Linux】CIFS挂载Windows共享
  • 原文地址:https://www.cnblogs.com/heartstage/p/3363126.html
Copyright © 2011-2022 走看看