-
定义
定义对象间的一种一对多依赖关系,使得每当一个对象状态发生改变时,其相关依赖对象皆得到通知并被自动更新。 -
类图
Obeserver -
例子
interface Observer {
public void update();
}
class ConcreteObserver1 implements Observer {
public void update() {
System.out.println("观察者1收到信息,并进行处理。");
}
}
class ConcreteObserver2 implements Observer {
public void update() {
System.out.println("观察者2收到信息,并进行处理。");
}
}
abstract class Subject {
private List<Observer> obs = new ArrayList<Observer>();
public void addObserver(Observer obs){
this.obs.add(obs);
}
public void delObserver(Observer obs){
this.obs.remove(obs);
}
protected void notifyObserver(){
for(Observer o: obs){
o.update();
}
}
public abstract void notify();
}
class ConcreteSubject extends Subject {
public void notify(){
System.out.println("被观察者事件发生");
this.notifyObserver();
}
}
public class Client {
public static void main(String[] args){
Subject sub = new ConcreteSubject();
sub.addObserver(new ConcreteObserver1()); //添加观察者1
sub.addObserver(new ConcreteObserver2()); //添加观察者2
sub.notify();
}
}
补充
- 观察者以其响应式编程的特点受到了越来越多的青睐,特别是前端,各种变体层出不穷MVVM,EventBus等等,这样的代码不仅降低了各个部分之间的耦合,而且也让开发变得更加舒适,但是要有一个良好的架构和设计,否则可读性会变的比较差。
网友评论