区别:前者低耦合,每次观察者变更,被观察者要做相应变更处理;后者完全无耦合。
观察者模式
class Observable{
@Getter
@Setter
private List<Observer> observerList;
void changed(){
for (Observer observer : observerList) {
// 通知各个观察者 天气变了
observer.change();
}
}
}
class Observer {
private String name;
Observer(String name) {
this.name = name;
}
void change() {
System.out.println(name + "改变了");
}
}
public static void main(String[] args) {
Observer 温度计 = new Observer("温度计");
Observer 气压计 = new Observer("气压计");
Observer 湿度计 = new Observer("温度计");
List<Observer> observers = new ArrayList<>();
observers.add(温度计);
observers.add(气压计);
observers.add(湿度计);
Observable observable = new Observable();
observable.setObserverList(observers);
observable.changed();
}