观察者模式常用于多个对象间存在一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都能得到通知并被自动更新。观察者模式又被称为发布-订阅模式、模型-视图模式,它是一种行为型模式。
下面实现一个简单的观察者模式,首先定义Subject和Observer接口。
Subject接口定义了注册观察、取消观察和通知所有观察者的方法,Observer接口定义了更新方法,当被观察者更新时会触发回调该方法,下面是具体的实现类MySubject和MyObserver。
当被观察者msg信息有更新时,会在处理完后调用notifyObservers方法通知所有的观察者,并调用其update方法来更新状态。
观察者模式符合开闭原则,无需修改观察者或被观察者的相关代码即可新增观察者,另外在以上实现中,观察者和被观察者是抽象依赖,符合依赖反转原则。