Java中自带Observer模式运用 博客分类: Design PatternAccumulation 设计模式ObserverJava自带
程序员文章站
2024-03-21 12:44:46
...
使用Java中自带的Observer模式时,需要用到一下两个类:
Observer |
Observable |
需要注意到是,当需要使用Observable中的notifyObservers()方法时,必须在之前调用setChanged()方法才会生效,否则notifyObservers()方法什么都不会发生。
代码如下:
TfObserver.java
import java.util.Observable; import java.util.Observer; public class TfObserver implements Observer { @Override public void update(Observable arg0, Object arg1) { System.out.println("Tf's Observer has saved " + arg1); } }
MhObserver.java
import java.util.Observable; import java.util.Observer; public class MhObserver implements Observer { @Override public void update(Observable o, Object arg) { System.out.println("Mh's Observer has saved " + arg); } }
以上为两个观察者。
Client.java
import java.util.Observable; public class Client extends Observable { public void notifyAll(String s) { super.setChanged(); super.notifyObservers(s); } }
需注册观察者的Client。
MainClass.java
import java.util.Observer; public class MainClass { public static void main(String[] args) { Client o = new Client(); Observer tf = new TfObserver(); Observer mh = new MhObserver(); o.addObserver(tf); o.addObserver(mh); // System.out.println(o.countObservers()); // 只有在setChange()被调用后,notifyObservers()才会去调用update(),否则什么都不干。 // System.out.println(o.hasChanged()); o.notifyAll("Lol~"); } }