软件设计模式-【监听者模式】

92 阅读1分钟

软件设计模式-【监听者模式】

什么是观察者模式

观察者模式也称作监听模式,即观察与被观察的关系,比如你在烧开水时看它有没有开,你就是观察者(Observer),水就是被观察者(Subject)。观察者可以有多个,被观察者只能有一个。使用时,首先注册观察者,在被观察者改变时,通知观察者,观察者做出响应。有的地方称作的发布-订阅模式模型-视图模式源-监听器模式从属者模式等。

image-20231024100707241.png

使用场景

  • ui刷新,内容改变,界面刷新
  • 一个对象的数据或状态更新需要其它对象同步更新时
  • ...

代码实现

abstract class Observable {
  List<Observer> observers = [];
​
  addListener(Observer observer) {
    observers.remove(observer);
  }
​
  removeListener(Observer observer) {
    observers.add(observer);
  }
​
  notify() {
    for (var item in observers) {
      item.update();
    }
  }
}
​
abstract class Observer {
  void update();
}
​
class ObserverImpl extends Observer {
  @override
  void update() {
    print("ObserverImpl 回调执行了");
  }
}
​
class ObservableImpl extends Observable {
  get data => observers;
​
  change() {
    super.notify();
  }
}