观察者模式解析以及应用

0?wx_fmt=gif

0?wx_fmt=png

1  

什么是观察者模式

观察者模式是属于设计模式中的行为型模式。定义对象间的一种一对多的依赖关系,单一个对象的状态发生改变时,所有依赖于它的对象都得到通知并自动更新。 SubjectObserverSubject只能存在一个对象, 而Observer可以是一个或者多个。 Subject主要功能是接受数据并监听数据。当数据发生改变的时候, 它会通知ObserverObserver则是向Subject注册一个接口,就坐等Subject的通知消息。

2  

观察者模式适用性

  • 当一个抽象模型有两个方面,其中一个方面依赖于另一方面。将这二者封装在独立的对象中以使它们可以各自独立地改变和复用。

  • 当对一个对象的改变需要同时改变其它对象,而不知道具体有多少对象有待改变。

  • 当一个对象必须通知其它对象,而它又不能假定其它对象是谁。换言之,你不希望这些对象是紧密耦合的。

3  

Java代码模板

我以互联网气象台通知公告牌作为例子进行讲解。 Subject的接口, 方便管理以及通知消息给Observer

0?wx_fmt=png

2)定义一个Observer的接口 

0?wx_fmt=png

3)新建WeatherDataSt(气象站)类, 实现了Subject接口

0?wx_fmt=png

0?wx_fmt=png

4)公告牌1, 预报今天的天气( 观察者 )

0?wx_fmt=png

5) 公告牌2, 预报明天的天气( 观察者 )

0?wx_fmt=png

6) 主函数入口

0?wx_fmt=png

4  

Android系统的应用

观察者模式在Android源码中随处可见。Android中的广播机制就是采用观察者模式, 四大组件之一的广播接受者就充当Observer。再例如设配器Adaprer也是使用了观察者模式

5  

采用观察者模式实现水平滑动效果

1) 自定义水平滑动的View

0?wx_fmt=png

0?wx_fmt=png

0?wx_fmt=png

2)添加Subject角色的Adapter

0?wx_fmt=png

0?wx_fmt=png

0?wx_fmt=png

3)利用MainActivity展示内容 为MainActivity添加一个布局文件

0?wx_fmt=png

MainActivity的实现

0?wx_fmt=png

0?wx_fmt=png

小贴士    

因微信不支持站内链接, 请点击【阅读原文】阅读完整的代码

作者:猴哥,公众号:极客猴。爱好读书,喜欢钻研技术,梦想成为文艺青年的IT Boy。

 - END -

0?wx_fmt=jpeg

极客猴

分享干货的公众号

0?wx_fmt=jpeg

0?wx_fmt=jpeg

长按指纹 > 识别图中二维码 > 添加关注

点击“阅读原文”

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值