ISubject
View Code
AbstractSubject
View Code
SubjectA
View Code
IObserver
package Observer;public interface IObserver { void update(String changeMsg);}
ObserverA
package Observer;public class ObserverA implements IObserver{ @Override public void update(String changeMsg) { System.out.println("observerA recieves the information:" + changeMsg); }}
ObserverB
package Observer;public class ObserverB implements IObserver{ @Override public void update(String changeMsg) { System.out.println("observerB recieves the information:" + changeMsg); }}
ObserverC
package Observer;public class ObserverC implements IObserver{ @Override public void update(String changeMsg) { System.out.println("observerC recieved the information:" + changeMsg); }}
Test.java
public static void main(String[] args) { SubjectA sA = new SubjectA(); sA.addObserver(new ObserverA()); sA.addObserver(new ObserverB()); sA.addObserver(new ObserverC()); sA.inform("change my name to cc!"); }
运行结果
JDK已经实现了一套观察者模式,可以直接复用相关代码,主要业务逻辑会被封装在Observer的update方法中。
subject类:java.util.Observableobserver类:java.util.Observer