软件设计模式-【监听者模式】
什么是观察者模式
观察者模式也称作监听模式,即观察与被观察的关系,比如你在烧开水时看它有没有开,你就是观察者(Observer),水就是被观察者(Subject)。观察者可以有多个,被观察者只能有一个。使用时,首先注册观察者,在被观察者改变时,通知观察者,观察者做出响应。有的地方称作的发布-订阅模式、模型-视图模式、源-监听器模式、从属者模式等。
使用场景
- 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();
}
}