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编译最佳!

  • 相关阅读:
    第二十八课:focusin与focusout,submit,oninput事件的修复
    第二十七课:滚轮事件,mouseenter与mouseleave事件的修复
    anaconda
    matlab 假设检验
    keras 中如何自定义损失函数
    如何理解 卷积 和pooling
    交叉熵代价函数(作用及公式推导)
    深度学习
    中文 停用词 词典
    英文 停用词 词典
  • 原文地址:https://www.cnblogs.com/heartstage/p/3363126.html
Copyright © 2011-2022 走看看