观察者模式——解耦利器

来源:互联网 发布:海尔阿里云电视刷系统 编辑:程序博客网 时间:2024/06/05 12:05

观察者模式是一个使用率非常高的模式,常用于 订阅——发布系统。
其 最重要的作用就是 解耦,将观察者和被观察者解耦,让他们之间的依赖性更小。具体应用也就是说 让 UI层 和具体的业务逻辑解耦。

看计算机书籍的定义:定义对象间一种一对多的依赖关系,使得每当一个对象改变状态,则所有依赖于他的对象都会得到通知和更新。

使用场所:1,事件多集触发 ;2 跨系统的消息交换场景,例如消息队列,事件总线的处理机制等。

大致角色分类:

被观察者(Observable):抽象的角色,把所有观察者对象的引用保存在一个集合里,数量不定,对外提供一个接口,方便进行添加和删除观察者对象。

具体被观察者(ConcerteObservable):也就是我们的具体事件,当我们的这个事件内部状态发生改变时候,给所有的注册过的观察者发出通知.

观察者(Observer): 抽象角色, 观察者的抽象类,对外提供一个接口,方便得到通知时更新自己。

具体观察者(ConcereteObserver): 具体的观察者, 观察者的接口更新实例类, 当接到通知时候 及时更新自己。

代码举例:超市——购物者
观察者:购物者

这里写图片描述

被观察者:超市

这里写图片描述

具体实现

  1. 列表内容

输出内容:

这里写图片描述

这个观察者的Demo就完成了。

Observer 和Observable 是jdk的内置类型,观察者这个模式很重要。具体本人就不再做过多的解释。

小结一下:
观察者模式主要作用就是对象的解耦,将观察者和被观察者完全分离。只是依赖于Observer 和Observable 的抽象。

优点: Observer 和Observable 之间是抽象耦合, 应对业务变化。 增强的系统的灵活性,和扩展性。
缺点: 运行效率问题,一个被观察者,多个观察者,开发和调试比较麻烦, java消息通知是默认顺序执行的, 一个观察者卡顿了,整体效率会下降,不过我们可以考虑 异步方式来解决。

观察者模式——在Android中的应用 ,有时间在告诉大家啦。

1 0
原创粉丝点击