标签:使用 rgs 关系 sys 调试 发布 改变 比较 扩展
观察者模式(Observer Pattern)也称发布订阅模式,它是一种在项目中经常使用的模式。
定义:
观察者模式的类图如下所示。
观察者模式具体有以下4个角色。
Subject.java
public interface Subject { // 登记一个新的观察者 public void attach(Observer obs); // 删除一个登记过的观察者 public void detach(Observer obs); // 通知所有登记过的观察者对象 public void notifyObserver(); }
Observer.java
public interface Observer { // 更新方法 public void update(); }
ConcreteSubject.java
public class ConcreteSubject implements Subject { private Vector<Observer> obsVector = new Vector<Observer>(); @Override public void attach(Observer obs) { obsVector.add(obs); } @Override public void detach(Observer obs) { obsVector.remove(obs); } @Override public void notifyObserver() { for (Observer obs : obsVector) { obs.update(); } } public Enumeration<Observer> observers() { return obsVector.elements(); } // 业务方法,改变状态 public void change() { this.notifyObserver(); } }
ConcreteObserver.java
public class ConcreteObserver implements Observer { @Override public void update() { System.out.println("收到通知,并进行处理"); } }
Client.java
public class Client { public static void main(String[] args) { // 创建一个主题对象(被观察者) ConcreteSubject subject = new ConcreteSubject(); // 创建一个观察者 Observer obs = new ConcreteObserver(); // 登记观察者 subject.attach(obs); // 改变状态 subject.change(); } }
优点:
缺点:
应用场景:
注意事项:
引用:
青岛东合信息技术有限公司 . 设计模式(Java版) . 电子工业出版社,2012,149-152.
标签:使用 rgs 关系 sys 调试 发布 改变 比较 扩展
原文地址:https://www.cnblogs.com/yewen1234/p/10044679.html