观察者模式
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了观察者模式相关的知识,希望对你有一定的参考价值。
观察者模式
这是一个我们最经常接触到的设计模式,也称为订阅者模式
它不仅仅常常出现我们的项目,也常常出现在我们生活中
生活中像是订报纸、订牛奶、订阅到货通知等等
项目中则是MVC的Model->View,即是数据变化通知视图变化
那么我们可以看得出来,此模式的特点:
- 主题与订阅者的关系组成(通常简单应用中是一个主题对应多个订阅者,但实际上通常是多个主题对应多个订阅者的多对多关系)
- 订阅者可以动态订阅和取消订阅(我想订牛奶了和我不想订牛奶了可以随时改变)
所以说需要使用观察者模式的情况,通常是需要对某一对象的状态进行监测,发生变化的情况下通知对此对象关注的其他对象
订阅者和被订阅者的关系是在运行时动态发生变化的,也就是说这个模式是行为类型的模式(运行中改变行为)
我们可以从设计原则的角度来看一下,我们将在Subject中的notifyObservers方法中调用Observer的接口:update,而并不清楚Observer的具体部分
我们可以试着想象,这体现的是高内聚低耦合中的低耦合,则降低耦合度,彼此之间所知胜少。
说到这,可能有人要跳出来说,那为什么Observer中会持有Subject对象了,实际上这不是必要的,但也没关系,操作中我们经常会只开放少许的访问接口,也就是说,通过这个实例变量,我们也没有太多的操作权限。
订阅者的设计模式并不难理解,就不附上代码了。
可以这么来看
1、主要关系是2个:订阅者和被订阅者
2、注册订阅和解除订阅的方法
3、状态变化后统一的通知方法(接口)
实际运用中会出现在注册后通知、购物付款后通知、到货通知等等。
以上是关于观察者模式的主要内容,如果未能解决你的问题,请参考以下文章