设计模式应用与发展之观察者模式(java)
更新时间:2024-07-09 17:40:01 阅读量: 综合文库 文档下载
- 观察者设计模式的应用推荐度:
- 相关推荐
设计模式应用与发展之观察者模式
1 2 3 4
引子........................................................................................................................................... 2 望断天涯路 ............................................................................................................................... 2 家书抵万金 ............................................................................................................................... 2 网络是原罪 ............................................................................................................................... 4
1 / 4
1 引子
话说上一篇中的门面模式已然跻身云端,而猿人们仍在地面唏嘘??
关于设计模式,有人追捧,有人崇拜,也有人束之高阁;追捧的为模式而模式着,崇拜的始终原地膜拜着,束之高阁的则扮演路人打着酱油。然而,这都不是程序猿人自我进化的正确道路;因知其始,方知其行,而后知其终。
今天继续我们的第三篇探讨:观察者模式之始末。
2 望断天涯路
小时候听老师讲史记,其中有一段说大禹同学受了皇命,抛下尚未圆房的娇妻涂山氏,匆匆赶赴洪灾现场,亲自督促指挥,治理洪患。话说这理科屌丝男还真就是缺筋少弦,十几年下来,三次经过老家都不回去一趟。涂山氏一个大花姑娘的,还没圆房就跑了老公,心里火热着就盼太阳落西山沟啊,就天天的,跑到村口的大石上,踮脚顾盼,望穿秋水。这初恋情,深似海,不想一望就是十几年,花姑娘望成了中年妇女,大禹才回来。恩,据说那块石头现如今成了非著名景点,号:望夫石。
后来,老师又给讲战国了,那时候不是魏打燕,就是齐打楚,最牛逼的就是秦了,见谁打谁。天天的,到处抓壮丁,奔赴了战场,一个个的,死的凄惨,连爹妈都认不出来,马革裹尸就更是奢望了。一到抽丁队来了,便觉风萧萧兮浑身冷冰冰,易水刺骨寒;全村上下哭的稀里哗啦,聚到村口给壮士们送别,这一去兮不复还。
听到悲凉处,真心觉得凄惨,暗叹当世生活还是很美好的,没有那么多生离死别。直到某一天,当我化身程序猿人,调用了另一个猿人的模块接口:
...
// 调用zip工具解压
ZipUtils.unzip(\System.out.println(\解压完成\...
看得出来,ZipUtils就是另一个猿人写的模块了。
代码很简单,也很容易懂,我立刻有种膜拜的冲动:这简直就是神作啊。
但很不幸,我常常觉得自己就是幽怨的涂山氏,坐在转椅上望穿秋水,期待着“解压完成”能出现在我的视线里;我经常看到的是Stack Trace输出,我的unzip调用就像壮士们出征一样,风萧萧兮不复还。
3 家书抵万金
老师说了,历史的车轮始终是滚滚向前的。
随着社会进步,特别是造纸术发明之后,读书人渐渐多了,人们便也开始矫情起来,会舞文弄墨了。这不烽火连三月,家书抵万金嘛。一张薄纸,却沉甸甸的;当然书中有喜有忧,但至少不是一等十几年,也不再是薛定谔的猫了。
我找到ZipUtils猿人,在夜宵摊上就着酒劲,告诉他我讨厌Stack Trace,我讨厌无力的等待。ZipUtils猿人仰望着星空,若有所思,当夜便高举设计模式大旗,大刀阔斧的进行了改革;终于在一个黑夜过后,他走出了办公室,却迎着朝阳走进了一个新时代:
2 / 4
public class ZipUtils extends Observable { ... // 保存当前正在处理的文件名 private String currentFileName; ... // 解压zip文件到指定目录 public boolean unzip(String zipFile, String unzipDir) { ... try { // 打开zip文件输入流 ZipInputStream zin = new ZipInputStream(new FileInputStream(zipFile)); // 取zip压缩项 ZipEntry entry = zin.getNextEntry(); while(entry != null) { ... // 设置当前正在处理的文件名 currentFileName = entry.getName(); // 改变状态 this.setChanged(); // 通知观察者 this.notifyObservers(); ... } ... } catch(…) { ... return false; } return true; } // 保存当前正在处理的文件名 public String getCurrentFileName() { return currentFileName; } ... }
ZipUtils猿人兴奋的告诉我,他在一宿的闭关中,触摸到了道。 啥?道?我不明白。
我只知道他让我修改我的代码,按照他的指导,我小心翼翼,如履薄冰,修改了我的代
3 / 4
码:
public class OhMyGod implements Observer { ... private ZipUtils zip = new ZipUtils(); ... public void beg() { // 添加观察者 zip.addObserver(this); // 解压 boolean success = zip.unzip(\ System.out.println(\ } public void update(Observable o, Object arg) { // 输出当前被解压的文件名 System.out.println(\ } … }
我看着这些被我增加的代码,心里充满了疑惑。这就行了?怎么多了这么多代码? 直到我和ZipUtils猿人恭敬立在屏幕前,看着一行行的信息输出,我长舒了一口气。而从此之后,在我的眼中,ZipUtils猿人也开始浑身泛起金光。
事情还没完,ZipUtils的兴奋仍在持续,他拉着我的小手,跟我说这是一种设计模式的应用,他的名字叫观察者,他不光能展示ZipUtils的运行过程,他还能被多个对象同时观察,云云??
4 网络是原罪
我早已经不再是学生,而社会的进步更是超乎人们的想象,我们已经步入一个信息泛滥的时代。在这个时代,你登录了QQ,你所有的好友都会知道你已经上线。你发了一条微博,所有关注你的人,立刻会收到一条通知。噢,你丢了一个U盘?那么恭喜你,你很快就要出名了。
多年的程序猿人生涯,我接触了更多的模块,更大规模的系统,更复杂的业务逻辑。但我发现,观察者模式依然坚挺适用,只是看上去稍微换了些许模样;甚至更进一步,我们采用了更具规模的各种中间件来实现,比如JMS,比如ActiveMQ??
4 / 4
正在阅读:
实变函数论第四章 可测函数05-23
Internet技术与应用第1章03-29
2017-2022年中国工业软件市场全景调查与行业前景预测报告(目录05-22
生化修改题203-16
参观铜陵博物馆作文600字07-08
马克思主义哲学原理试题库09-30
上海闵行区2012年初三物理一模卷07-24
2011年博物馆论著目录05-06
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 观察者
- 设计模式
- 模式
- 应用
- 发展
- java
- 二年级下册语文《写字表》生字组词(拼音版)
- 信用风险缓释凭证与CDS的联系与区别
- 职业
- JY大堂酒廊服务质量问题状分析及对策
- 化工原理习题解答(陈敏恒)
- 二年级数学下册单元检测试卷(17套)答案
- 广西三江至柳州高速公路某标实施性施工组织设计
- 四川省普通国省干线公路设计变更管理办法(正式稿)
- 历史趣谈隋炀帝开凿大运河的真正动机
- 有关于暑假社会实践报告
- 国际公法网考单选题(按字母排列)
- 工作台面积250×1000mm2卧式升降台铣床主传动系统设计
- 2014年常德市中考化学试卷及答案
- 凝汽器焊接作业指导书(修改版)ok
- 龙岩市白沙水电站库区公路复建工程第四合同延续段施工组织设计
- internet试题1
- S版六年级语文下册课文内容复习要点(一)
- 河北省农户信用信息管理系统设计与开发
- 计算机图形学随堂测试2(所有大题答案)
- 作文开头和结尾歌