1.观察者模式介绍
观察者模式是一个使用频率非常高的模式,它最常用的是GUI系统、订阅-发布系统。因为这个模式的重要作用就是解耦,将被观察者和观察者解耦,使得它们之间的依赖性更小,甚至做到毫无依赖。2.观察者模式的定义
定义对象间一种一对多的依赖关系,使得每当一个对象改变状态,则所有依赖于它的对象都会得到通知并被自动更新。3.观察者模式的使用场景
关联行为场景
关联行为是可以拆分的,而不是“组合”的关系事件多级触发场景
跨系统的消息交换场景
如 消息队列、事件总线的处理机制4.观察者模式的UML类图
5.具体实现
抽象主题角色类
/**
* 抽象主题类
* Created by Teaphy
* 2016/4/24.
*/
public abstract class Subject {
// 用来保存注册的观察者对象
private List<Observer> listsObserver = new ArrayList<>();
/**
* 注册观察者对象
* @param observer 观察者对象
*/
public void attach(Observer observer){
listsObserver.add(observer);
System.out.println("Attached an observer");
}
/**
* 删除观察者对象
* @param observer 观察者对象
*/
public void detach(Observer observer){
listsObserver.remove(observer);
}
/**
* 通知所有注册的观察者对象
*/
public void nodifyObservers(String newState){
for(Observer observer : listsObserver){
observer.update(newState);
}
}
}