需求:

有一个报社,用户可以随时订阅报纸,也可以随时取消订阅。当每天的新闻来的时候,报社用邮递员投递给订阅了报纸的用户。订阅者有老人、小孩和青年。

分析:

报社相当于被观察的对象,用户相当于观察者,一旦新闻有更新,报社就通知所有观察者。

类图:

扩展:

该类图使用的是“推”的方式将新闻推送给订阅者。还可以使用一种的“拉”的方式实现,在Update传递空参数,只是通知订阅者数据有更新,然后由订阅者自己去报社获取(GetNews)。这种方式实现起来更麻烦,但是更容易扩展,如果有一天订阅者需要的参数变化,只需要在报社类里面添加一个方法就好。

转载于:https://www.cnblogs.com/key000/p/4099083.html

设计模式之Observer(观察者)模式相关推荐

  1. Observer(观察者)模式的代码演示

    关于什么是Observer(观察者)模式,它的原理是什么,我不擅长理论知识的说明,这里通过一个简单有趣的小例子来给大家演示,相信大家看完之后,就会很明白了. 现在假设:一个小孩子在睡觉,睡醒后要他父亲 ...

  2. 设计模式记--Observer Pattern观察者模式

    观察者模式--定义了对象之间的一对多依赖,这样一来,当一个对像改变状态时,它的所有依赖者都会收到通知并自动更新.   从定义可以看出,OBSERVER(观察者)模式逻辑上需要两组对象来实现.首先它必需 ...

  3. 设计模式学习笔记——观察者(Observer)模式

    设计模式学习笔记--观察者(Observer)模式 @(设计模式)[设计模式, 观察者模式, Observer] 设计模式学习笔记观察者Observer模式 基本介绍 观察者案例 类图 实现代码 Ob ...

  4. 设计模式:观察者(Observer)模式

    设计模式:观察者(Observer)模式 一.前言   观察者模式其实最好的名称应该是"发布订阅"模式,和我们现在大数据之中的发布订阅方式比较类似,但是也有区别的地方,在上一个设计 ...

  5. 观察者(Observer)模式

    http://www.cnblogs.com/zhenyulu/articles/73723.html 一. 观察者(Observer)模式 观察者模式又叫做发布-订阅(Publish/Subscri ...

  6. Observer观察者设计模式

    目录 问题 程序模拟 版本一:while死循环 版本二:面向对象式地傻等 版本三:加入观察者 版本四:加入多个观察者 版本五:分离观察者与被观察者 版本六:观察者根据事件来作出处理 版本七:处理事件需 ...

  7. 05Observer/Event(观察者)模式

    技术交流QQ群:1027579432,欢迎你的加入! 1.Observer/Event(观察者)模式动机 在软件构建过程中,我们需要为某些对象建立一种"通知依赖关系"-- 一个对象 ...

  8. java设计模式--观察者模式(Observer)

    java设计模式--观察者模式(Observer) java设计模式--观察者模式(Observer) 观察者模式的定义: 定义对象间的一种一对多的依赖关系.当一个对象的状态发生改变时,所有依赖于它的 ...

  9. 设计模式-观察者模式 发布/订阅模式

    设计模式-观察者模式 发布/订阅模式 代码 观察者接口 public interface IHanFeiZi{// 当吃早饭时public void havBreakFast();// 进行娱乐活动时 ...

最新文章

  1. NodeJs:用 nodejs + edge + ejs + c#,打造属于自己的代码生成器
  2. Spring Cloud Gateway(过滤器)
  3. zabbix4.2学习笔记--新建用户组和用户
  4. 关于Android 传感器坐标与读数的进一步讨论
  5. 转:c# Linq 的分页[转]
  6. android软件获取系统签名
  7. Redis基准测试火焰图 | 附 svg矢量图
  8. 加载等待loading
  9. linux网络线序MDI,网线RJ45(水晶头)线序排列以及八字口诀
  10. bat批处理之for循环
  11. php 查文件sha1 内存不足,PHP 计算文件的 sha1 散列值
  12. 【C++】给定两个没有刻度的容器,对于任意给定的容积,求出如何只用两个瓶装出L升的水
  13. 1.5 人工智能迅速发展的技术领域
  14. 怎么确定电脑上没有mysql_怎么检查电脑有没有mysql?
  15. 上穿均线压力的大阳线特征:
  16. Net分布式系统之五:C#使用Redis集群缓存
  17. Linux系统GIC介绍与编程
  18. 计算机辅助设计的英语缩写是什么,计算机辅助设计的英文缩写是什么
  19. MMGSDI启动流程
  20. FileInputStream和BufferedInputStream的比较

热门文章

  1. java中的内存一般分成几部分?
  2. eclipse 完全智能提示
  3. python安装xlrd和xlwt及应用
  4. 年度回忆录(2011.12----2012.09)
  5. SpringMVC自学日志05(结果跳转方式,数据处理 ,乱码问题)
  6. MySql将查询结果插入到另外一张表
  7. Struts2之文件上传
  8. java memcmp_C 库函数
  9. 最易懂的Spring IOC原理讲解
  10. python负数的表示方法_python输入负数