观察者模式(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.
如对本文有疑问, 点击进行留言回复!!
荐 厉害了!阿里P8架构师用4大技术文档带你深入解读爆火的中台战略
FlowableException: Error initialising dmn data model报错问题
网友评论