设计模式:观察者模式

什么是观察者模式
观察者模式(Observer Pattern),也叫做发布/订阅模型(Publish/Subscribe)。在此种模式中,一个目标物件管理所有相依于它的观察者物件,并且在它本身的状态改变时主动发出通知。这通常透过呼叫各观察者所提供的方法来实现。此种模式通常被用在即时事件处理系统。
一句话归纳
解耦观察者与被观察者
示例
在我很小的时候,我看过很多动画片,比如“蓝猫淘气三千问”、“神龙斗士”、“迪迦奥特曼”等等,但有一部动画片虽然全程文字少的可怜,但还是让我的童年充满乐趣,它叫做“猫和老鼠”,我记得有一个故事讲的是某一个夜晚,汤姆找杰瑞玩游戏,但杰瑞想尽办法叫醒汤姆的主人,主人醒了打了汤姆一顿,很搞笑~
在这个故事中,汤姆是被观察者,而杰瑞和主人是观察者,代码如下:

适用性
以下场景我建议你考虑使用
一个对象的改变将导致其他一个或多个对象也发生改变,而不知道具体有多少对象将发生改变,可以降低对象之间的耦合度。
实现类似广播机制的功能,不需要知道具体收听者,只需分发广播,系统中感兴趣的对象会自动接收该广播。
需要在系统中创建一个触发链,可以使用观察者模式创建一种链式触发机制
局限性
以下场景我建议你谨慎使用
目标与观察者之间的依赖关系并没有完全解除,而且有可能出现循环引用。
当观察者对象很多时,通知的发布会花费很多时间,影响程序的效率。
END
好兄弟可以点赞并关注我的公众号“javaAnswer”,全部都是干货。
