这是传说,必须迷恋它:观察者模式

简介:

观察者模式又叫发布-订阅模式。它定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态发生改变时,会通知所有观察者对象,使它们能够自动更新自己。
从上面的描述中,我们可以抽象出主题Subject类和观察者Observer类,”一对多“的关系告诉我们,观察者可以有多个,而主题只有一个。主题有一个很有趣的东西叫”状态“,因为它的变化会唤醒多个观察者”自动更新自己“。
举例来说,我们上网常用的某种下载工具,当文件下载结束时,下载结束的提示音(Toner)响起,下载日志(Logger)里写入文件下载成功时的时间。这里我们可以抽象出被下载的文件为主题Subject,它的标志是否下载成功IsDownloaded是”状态“。提示音Toner和下载日志Logger为观察者。我们用c#里的委托和事件来实现。好了,code is cheap.上代码了。
1.类图:

2.代码

ContractedBlock.gif Code

正像上面代码里注释的那样,实际的项目中,观察者更新自己的方法名并不一定叫Update,我们改进一下代码中的方法名,让它们看上去更实际一些:

ContractedBlock.gif Code


 




本文转自JeffWong博客园博客,原文链接:http://www.cnblogs.com/jeffwongishandsome/archive/2009/04/03/1423974.html,如需转载请自行联系原作者


目录
相关文章
|
4月前
|
设计模式 Java 开发者
设计模式揭秘:Java世界的七大奇迹
【4月更文挑战第7天】探索Java设计模式:单例、工厂方法、抽象工厂、建造者、原型、适配器和观察者,助你构建健壮、灵活的软件系统。了解这些模式如何提升代码复用、可维护性,以及在特定场景下的应用,如资源管理、接口兼容和事件监听。掌握设计模式,但也需根据实际情况权衡,打造高效、优雅的软件解决方案。
38 0
|
4月前
从一个小故事讲解中介者模式~
从一个小故事讲解中介者模式~
33 0
|
4月前
|
设计模式 Java
小谈设计模式(15)—观察者模式
小谈设计模式(15)—观察者模式
|
设计模式 数据库
几张图带你手拿把掐设计模式六大原则
几张图带你手拿把掐设计模式六大原则
68 0
|
设计模式 存储 JSON
设计模式再探-备忘录模式
最近在做一学期的语文课,每一节课结束的时候,需要将这节课上到哪儿了给记录下来;以便于下次再上课的时候接着上,这样一个需求。
设计模式再探——状态模式
最近产品中有这样的业务需求,不同时间(这里不是活动的执行时间,而是活动的执行时刻)展示不同的活动;
|
设计模式 Java
【设计模式系列】——观察者模式攻坚战
【设计模式系列】——观察者模式攻坚战
233 1
【设计模式系列】——观察者模式攻坚战
|
设计模式 NoSQL Java
被误读的设计模式
被误读的设计模式
112 0
被误读的设计模式
|
存储 设计模式 监控
设计模式轻松学【二三】备忘录模式
我们在下棋的时候,如果需要悔棋的功能,就需要系统记住每一步下棋的操作,这样才能够实现悔棋
109 0
设计模式轻松学【二三】备忘录模式
|
设计模式 缓存 安全
【设计模式】从女娲娘娘到取媳妇
💫你好,我是小航,一个正在变秃、变强的准大三党 💫本文主要讲解设计模式,示例Demo采用Java语言演示 💫欢迎大家的关注!
156 0
【设计模式】从女娲娘娘到取媳妇