当前位置: 首页 > 图灵资讯 > 技术篇> Java 设计模式之(观察者模式)

Java 设计模式之(观察者模式)

来源:图灵教育
时间:2023-06-15 09:26:47

1.概念

观察者模式(observer)又称发布-订阅(Publish/Subscribe)模式

观察者模式是一种一对多的依赖关系,允许多个观察者同时监控一个主题对象。当主题对象在状态下发生变化时,它会通知所有观察者,使他们能够自动更新自己。

2.主题和观察者共有四个角色

(1)Subject:抽象主题,他将所有观察者对象保存在一个集合中,可以有任何数量的观察者,提供一个可以添加和删除观察者对象的界面。

(2)ConcreteSubject:对于特定的主题,角色将相关状态存储在特定的观察者对象中,并在特定主题的内部状态发生变化时向所有注册的观察者发出通知。、

(3)Observer:抽象观察者是观察者的抽象类,它定义了一个更新界面,以便在获得主题更改通知时更新自己。

(4)ConcrereObserver:具体观察者实现抽象观察者定义的更新接口,以便在获得主题变更通知时更新自己的状态。

3.适用性

抽象模型有两个方面,一个方面取决于另一个方面

当一个对象的变化需要改变其他对象时,其他对象不知道具体的数量

4.优点

增加观察者或增加观察者不会改变现有代码,实现关闭-开放的原则

耦合双方依赖抽象而不是具体实现,使各自的变化不会影响另一方的变化

5.不足

当观察者通知观察者时,没有固定的顺序,即随机通知,这是基于线性的,因此在许多情况下完成通知需要很长时间,然后可以考虑异步。