你的位置:首页 > 软件开发 > Java > 设计模式之观察者模式, 个人感觉相当的重要

设计模式之观察者模式, 个人感觉相当的重要

发布时间:2017-03-31 12:00:07
原文地址:点击就送观察者模式: (又被成为发布订阅模式, 模型-视图模式, 源-收听者模式或从属者模式) 是软件设计模式的一种. 在这种模式中, 一个目标物件管理所有依赖于他的观察者物件, 并且在它本身的状态改变时, 主动发出通知. 这通常透过呼叫各观察者所提供的方法来实现. 此 ...

设计模式之观察者模式, 个人感觉相当的重要

原文地址:点击就送


观察者模式: (又被成为发布订阅模式, 模型-视图模式, 源-收听者模式或从属者模式) 是软件设计模式的一种. 在这种模式中, 一个目标物件管理所有依赖于他的观察者物件, 并且在它本身的状态改变时, 主动发出通知. 这通常透过呼叫各观察者所提供的方法来实现. 此种模式通常被用来视作事件处理系统.


UML 设计模式之观察者模式, 个人感觉相当的重要

在jdk中有 观察者模式的例子

  • Observer观察者接口
  • 被观察者类 Observable
  • 被观察者发生改变时会通知观察者

观察者模式: 总体上被分为两种

  • 发布-订阅类的问题处理
  • 事件驱动模型: 类似web开发的**
  • ps:补充一下序列化 key 地址改变, 反序列不会调用构造等

事件驱动模型

  • jdk中自带 EventListener 事件监听接口
  • 其中的 Object被transient修饰 ps序列化的相关知识

这两种代码上的区别

  • 发布订阅: 被观察者需要继承Observable, 观察者需要实现Observer
  • 事件驱动模型: 主动方需要实现 WriterListener[]

总结:

  • 这两种模型达到的效果看上去是一样的, 观察者模式更加贴近现实业务, 事件驱动比观察者不用的地方
  • 观察者模式中理论上针对被观察者的动作是唯一的, 尽管update中有两个参数 一个是对象 一个算是标识, 在监听者模式中算是自定义的 - 注意点实际动作都是由监听者来实现的, 被监听者调用
  • 事件驱动更加的灵活, 但是系统复杂度作为代价, 也就是由事件源自己来维护监听队列
  • 观察者模式的局限性: 如果被观察者原来就有父类, 尽管可以用适配器模式, 但是事件驱动事件源的监听列表是自己维护的
  • 观察者模式中, 只能用update来触发对应的操作, 尽管有第二个参数作为双方约定, 事件驱动的信息都是封装在event中由监听者自己来定义, 监听者明白自己想要什么

文中最后举了一个类子, 感冒了脑袋有点晕,自我总结下

  • button是触发事件的媒介, 需要注册点击事件(监听+具体实现), 比如双击这个操作, 用户双击, 事件发生

整个观察者模式主要分为两大块

  • 观察者模式: 发布--订阅, 变化--更新
  • 事件驱动模型: 请求--响应, 事件发生--事件处理
  • 也就是应用场景经典代表作者与读者, 按钮事件

进度还有 75% fight


原标题:设计模式之观察者模式, 个人感觉相当的重要

关键词:设计模式

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。