打字猴:1.700469727e+09
1700469727
1700469728
1700469729 设计模式之禅 22.4.3 订阅发布模型
1700469730
1700469731 观察者模式也叫做发布/订阅模型(Publish/Subscribe),如果你做过EJB(Enterprise JavaBean)的开发,这个你绝对不会陌生。EJB2是个折腾死人不偿命的玩意儿,写个Bean要实现,还要继承,再加上那一堆的配置文件,小项目还凑活,你要知道用EJB开发的基本上都不是小项目,到最后是每个项目成员都在骂EJB这个忽悠人的东西;但是EJB3是个非常优秀的框架,还是算比较轻量级,写个Bean只要加个Annotaion就成了,配置文件减少了,而且也引入了依赖注入的概念,虽然只是EJB2的翻版,但是毕竟还是前进了一步。在EJB中有3个类型的Bean:Session Bean、Entity Bean和MessageDriven Bean,我们这里来说一下MessageDriven Bean(一般简称为MDB),消息驱动Bean,消息的发布者(Provider)发布一个消息,也就是一个消息驱动Bean,通过EJB容器(一般是Message Queue消息队列)通知订阅者做出回应,从原理上看很简单,就是观察者模式的升级版,或者说是观察则模式的BOSS版。
1700469732
1700469733
1700469734
1700469735
1700469736 设计模式之禅 [:1700454023]
1700469737 设计模式之禅 22.5 最佳实践
1700469738
1700469739 观察者模式在实际项目和生活中非常常见,我们举几个经常发生的例子来说明。
1700469740
1700469741 ❑文件系统
1700469742
1700469743 比如,在一个目录下新建立一个文件,这个动作会同时通知目录管理器增加该目录,并通知磁盘管理器减少1KB的空间,也就说“文件”是一个被观察者,“目录管理器”和“磁盘管理器”则是观察者。
1700469744
1700469745 ❑猫鼠游戏
1700469746
1700469747 夜里猫叫一声,家里的老鼠撒腿就跑,同时也吵醒了熟睡的主人,这个场景中,“猫”就是被被观察者,老鼠和人则是观察者。
1700469748
1700469749 ❑ATM取钱
1700469750
1700469751 比如你到ATM机器上取钱,多次输错密码,卡就会被ATM吞掉,吞卡动作发生的时候,会触发哪些事件呢?第一,摄像头连续快拍,第二,通知监控系统,吞卡发生;第三,初始化ATM机屏幕,返回最初状态。一般前两个动作都是通过观察者模式来完成的,后一个动作是异常来完成。
1700469752
1700469753 ❑广播收音机
1700469754
1700469755 电台在广播,你可以打开一个收音机,或者两个收音机来收听,电台就是被观察者,收音机就是观察者。
1700469756
1700469757
1700469758
1700469759
1700469760 设计模式之禅 [:1700454024]
1700469761 设计模式之禅 第23章 门面模式
1700469762
1700469763 设计模式之禅 [:1700454025]
1700469764 23.1 我要投递信件
1700469765
1700469766 我们都写过纸质信件吧,比如给女朋友写情书什么的。写信的过程大家应该都还记得——先写信的内容,然后写信封,再把信放到信封中,封好,投递到信箱中进行邮递,这个过程还是比较简单的,虽然简单,但是这4个步骤都不可或缺!我们先把这个过程通过程序实现出来,如图23-1所示。
1700469767
1700469768
1700469769
1700469770
1700469771 图23-1 写信过程类图
1700469772
1700469773 这一个过程还是比较简单的,我们看程序的实现,先看接口,如代码清单23-1所示。
1700469774
1700469775 代码清单23-1 写信过程接口
1700469776
[ 上一页 ]  [ :1.700469727e+09 ]  [ 下一页 ]