zoukankan      html  css  js  c++  java
  • 设计模式

    观察者模式:定义了对象间一对多的依赖关系,这样一来当一个对象的状态改变时,他的所有依赖都会自动收到通知并自动更新。

    java中内置的观察者模式:

    Observable类

    java.util.Observable

      http://docs.oracle.com/javase/7/docs/api/java/util/Observable.html

    Observable类用于创建可以观测到你的程序中其他部分的子类。当这种子类的对象发生变化时,观测类被通知。

      观测类必须实现定义了update()方法的Observer接口。

     当一个观测程序被通知到一个被观测对象的改变时,update()方法被调用。

      显然,Observable是一个抽象的主题对象。

      一个被观测的对象必须服从下面的两个简单规则:

      第一,如果它被改变了,它必须调用setChanged()方法。

      第二,当它准备通知观测程序它的改变时,它必须调用notifyObservers()方法,这导致了在观测对象中对update()方法的调用。

      注意:如果在调用notifyObservers()方法之前没有调用setChanged()方法,就不会有什么动作发生。

      notifyObservers()方法中包含clearChanged()方法,将标志变量置回原值。

      notifyObservers()方法采用的是从后向前的遍历方式,即最后加入的观察者最先被调用update()方法。

    Observer接口

      java.util.Observer

      http://docs.oracle.com/javase/7/docs/api/java/util/Observer.html

      此接口中只有一个方法:

    void update(Observable o, Object arg)

      这个方法在被观察对象(Observable类)的notifyObservers()方法中被调用。

    观察者模式及Java实现例子:

      http://www.cnblogs.com/mengdd/archive/2013/02/07/2908929.html

  • 相关阅读:
    51 Nod 1068 Bash游戏v3
    51 Nod Bash 游戏v2
    51 Nod 1073 约瑟夫环
    UVA 12063 Zeros and ones 一道需要好好体会的好题
    51 Nod 1161 Partial sums
    2018中国大学生程序设计竞赛
    UVA 11971 Polygon
    UVA 10900 So do you want to be a 2^n-aire?
    UVA 11346 Possibility
    python with as 的用法
  • 原文地址:https://www.cnblogs.com/cathyqq/p/5248414.html
Copyright © 2011-2022 走看看