观察者模式的原理是比较简单的,将观察者实例设置给被观察者,被观察者发生状态变化时,使用观察者实例调用对应的方法,那么观察者就能收到对应的变化了。这里要注意一下实现的细节。
使用场景:
观察者模式在代码中使用是非常频繁的,特别是设计Gui的开发。书中有句话:适用于能根据对象状态进行相应处理的场景。
类结构图:
具体的实现一般情况会先对观察者Observer和被观察者Subject进行抽象,Observer可用接口,Subject可用抽象类。这样可以使得接口与实现分离。
更加准确的说法是Publish-Subscribe(发布-订阅)模式,因为观察者并不是主动观察被观察者的变化,而是被观察者主动将变化通知观察者。