打字猴:1.700479262e+09
1700479262 上级节点只对下级节点负责,它不关心下级节点的请求从何而来,只要是下级发送的请求就认为是下级的。还是以www.xxx.com域名为例,当最高节点(全球顶级DNS服务器)获得解析请求时,它认为这个请求是谁的?当然是第二个节点(中国顶级DNS服务器)的,否则它也不会把结果反馈给它,但是这个请求的源头却是首节点(上海DNS服务器)的。
1700479263
1700479264
1700479265
1700479266
1700479267 设计模式之禅 32.3.3 小结
1700479268
1700479269 通过对DNS解析过程的实现,我们发现触发链和责任链虽然都是链结构,但是还是有区别的。
1700479270
1700479271 ❑链中的消息对象不同
1700479272
1700479273 从首节点开始到最终的尾节点,两个链中传递的消息对象是不同的。责任链模式基本上不改变消息对象的结构,虽然每个节点都可以参与消费(一般是不参与消费),类似于“雁过拔毛”,但是它的结构不会改变,比如从首节点传递进来一个String对象或者Person对象,不会到链尾的时候成了int对象或者Human对象,这在责任链模式中是不可能的,但是在触发链模式中是允许的,链中传递的对象可以自由变化,只要上下级节点对传递对象了解即可,它不要求链中的消息对象不变化,它只要求链中相邻两个节点的消息对象固定。
1700479274
1700479275 ❑上下节点的关系不同
1700479276
1700479277 在责任链模式中,上下节点没有关系,都是接收同样的对象,所有传递的对象都是从链首传递过来,上一节点是什么没有关系,只要按照自己的逻辑处理就成。而触发链模式就不同了,它的上下级关系很亲密,下级对上级顶礼膜拜,上级对下级绝对信任,链中的任意两个相邻节点都是一个牢固的独立团体。
1700479278
1700479279 ❑消息的分销渠道不同
1700479280
1700479281 在责任链模式中,一个消息从链首传递进来后,就开始沿着链条向链尾运动,方向是单一的、固定的;而触发链模式则不同,由于它采用的是观察者模式,所以有非常大的灵活性,一个消息传递到链首后,具体怎么传递是不固定的,可以以广播方式传递,也可以以跳跃方式传递,这取决于处理消息的逻辑。
1700479282
1700479283
1700479284
1700479285
1700479286 设计模式之禅 [:1700454074]
1700479287 设计模式之禅 第33章 跨战区PK
1700479288
1700479289 创建类模式描述如何创建对象,行为类模式关注如何管理对象的行为,结构类模式则着重于如何建立一个软件结构,虽然三种模式的着重点不同,但是在实际应用中还是有重叠的,会出现一种模式适用、另外一种模式也适用的情况,我们到底该选用哪一个设计模式呢?本章就带领读者进入不同类设计模式PK的世界中,让你清晰地认识到各个模式的不同点以及它们的特长。
1700479290
1700479291 设计模式之禅 [:1700454075]
1700479292 33.1 策略模式VS桥梁模式
1700479293
1700479294 这对冤家终于碰头了,策略模式与桥梁模式是如此相似,简直就是孪生兄弟,要把它们两个分开可不太容易。我们来看看两者的通用类图,如图33-1所示。
1700479295
1700479296
1700479297
1700479298
1700479299 图33-1 策略模式(左)和桥梁模式(右)通用类图
1700479300
1700479301 两者之间确实很相似。如果把策略模式的环境角色变更为一个抽象类加一个实现类,或者桥梁模式的抽象角色未实现,只有修正抽象化角色,想想看,这两个类图有什么地方不一样?完全一样!正是由于类似场景的存在才导致了两者在实际应用中经常混淆的情况发生,我们来举例说明两者有何差别。
1700479302
1700479303 大家都知道邮件有两种格式:文本邮件(Text Mail)和超文本邮件(HTML MaiL),在文本邮件中只能有简单的文字信息,而在超文本邮件中可以有复杂文字(带有颜色、字体等属性)、图片、视频等,如果你使用Foxmail邮件客户端的话就应该有深刻体验,看到一份邮件,怎么没内容?原来是你忘记点击那个“HTML邮件”标签了。下面我们就来讲解如何发送这两种不同格式的邮件,研究一下这两种模式如何处理这样的场景。
1700479304
1700479305 33.1.1 策略模式实现邮件发送
1700479306
1700479307 使用策略模式发送邮件,我们认为这两种邮件是两种不同的封装格式,给定了发件人、收件人、标题、内容的一封邮件,按照两种不同的格式分别进行封装,然后发送之。按照这样的分析,我们发现邮件的两种不同封装格式就是两种不同的算法,具体到策略模式就是两种不同策略,这样看已经很简单了,我们可以直接套用策略模式来实现。先看类图,如图33-2所示。
1700479308
1700479309
1700479310
1700479311
[ 上一页 ]  [ :1.700479262e+09 ]  [ 下一页 ]