代码改变世界
[登录 · 注册]
  • 行为型模式
  • 1) 观察者模式

     

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

    绘图:

     

    场景:

    附注:

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

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

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

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

     

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

     

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

     

    2) 策略模式 Strategy

     

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

     

    绘图:

     

    场景:

    附注:

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

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

     

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

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

     

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

     

    3) 状态模式 State

     

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

    绘图:

     

    场景:

    附注:

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

     

    4) 命令模式 Command

     

    定义:

    绘图:

     

    场景:

    附注:

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

  • 【推广】 阿里云小站-上云优惠聚集地(新老客户同享)更有每天限时秒杀!
    【推广】 云服务器低至0.95折 1核2G ECS云服务器8.1元/月
    【推广】 阿里云老用户升级四重礼遇享6.5折限时折扣!
  • 原文:https://www.cnblogs.com/heartstage/p/3363126.html
Copyright 2008-2020 晋ICP备12007731号-1