// 抽象观察者public abstract class OwnObserver { protected String name; protected Subject sub; public OwnObserver (String name,Subject sub){ this.name=name; this.sub=sub; } public abstract void Update();}// 具体观察者public class StockObserver extends OwnObserver{ public StockObserver(String name, Subject sub) { super(name, sub); } public void Update() { System.out.println(this.name+","+this.sub.getSubjectState()+"速度关闭股票行情,继续工作!"); }}// 抽象通知者public abstract class Subject { public String SubjectState; abstract void Attach(OwnObserver observer); abstract void Detach(OwnObserver observer); abstract void Notify(); public String getSubjectState() { return SubjectState; } public void setSubjectState(String subjectState) { SubjectState = subjectState; }}// 具体通知者public class Boss extends Subject{ private ArrayList<OwnObserver> observers = new ArrayList<OwnObserver>();// 增加 @Override public void Attach(OwnObserver observer) { observers.add(observer); }// 减少 @Override public void Detach(OwnObserver observer) { observers.remove(observer); }// 通知 @Override public void Notify() { for (OwnObserver ownObserver : observers) { ownObserver.Update(); } }// 状态 public String SubjectState;}public class Test { public static void main(String[] args) {// 通知者,看到老板通知观察者 Boss wangwu = new Boss();// 看股票的同事 StockObserver stockObserver1 = new StockObserver("张三", wangwu); StockObserver stockObserver2 = new StockObserver("李四", wangwu); wangwu.Attach(stockObserver1); wangwu.Attach(stockObserver2); wangwu.setSubjectState("老板王五回来了!");// 通知 wangwu.Notify(); }