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
1700469761
设计模式之禅 第23章 门面模式
1700469762
1700469764
23.1 我要投递信件
1700469765
1700469766
我们都写过纸质信件吧,比如给女朋友写情书什么的。写信的过程大家应该都还记得——先写信的内容,然后写信封,再把信放到信封中,封好,投递到信箱中进行邮递,这个过程还是比较简单的,虽然简单,但是这4个步骤都不可或缺!我们先把这个过程通过程序实现出来,如图23-1所示。
1700469767
1700469768
1700469769
1700469770
1700469771
图23-1 写信过程类图
1700469772
1700469773
这一个过程还是比较简单的,我们看程序的实现,先看接口,如代码清单23-1所示。
1700469774
1700469775
代码清单23-1 写信过程接口
1700469776
1700469777
public interface ILetterProcess{
1700469778
1700469779
//首先要写信的内容
1700469780
1700469781
public void writeContext(String context);
1700469782
1700469783
//其次写信封
1700469784
1700469785
public void fillEnvelope(String address);
[
上一页 ]
[ :1.700469736e+09 ]
[
下一页 ]