欢迎光临散文网 会员登陆 & 注册

设计模式:观察者模式

2022-07-16 16:38 作者:做架构师不做框架师  | 我要投稿


什么是观察者模式

观察者模式(Observer Pattern),也叫做发布/订阅模型(Publish/Subscribe)。在此种模式中,一个目标物件管理所有相依于它的观察者物件,并且在它本身的状态改变时主动发出通知。这通常透过呼叫各观察者所提供的方法来实现。此种模式通常被用在即时事件处理系统。

一句话归纳

解耦观察者与被观察者

示例

在我很小的时候,我看过很多动画片,比如“蓝猫淘气三千问”、“神龙斗士”、“迪迦奥特曼”等等,但有一部动画片虽然全程文字少的可怜,但还是让我的童年充满乐趣,它叫做“猫和老鼠”,我记得有一个故事讲的是某一个夜晚,汤姆找杰瑞玩游戏,但杰瑞想尽办法叫醒汤姆的主人,主人醒了打了汤姆一顿,很搞笑~

在这个故事中,汤姆是被观察者,而杰瑞和主人是观察者,代码如下:

适用性

以下场景我建议你考虑使用

  • 一个对象的改变将导致其他一个或多个对象也发生改变,而不知道具体有多少对象将发生改变,可以降低对象之间的耦合度。

  • 实现类似广播机制的功能,不需要知道具体收听者,只需分发广播,系统中感兴趣的对象会自动接收该广播。

  • 需要在系统中创建一个触发链,可以使用观察者模式创建一种链式触发机制

局限性

以下场景我建议你谨慎使用

  • 目标与观察者之间的依赖关系并没有完全解除,而且有可能出现循环引用。

  • 当观察者对象很多时,通知的发布会花费很多时间,影响程序的效率。

END

好兄弟可以点赞并关注我的公众号“javaAnswer”,全部都是干货。


设计模式:观察者模式的评论 (共 条)

分享到微博请遵守国家法律