1700479241
1700479242
–-DNS服务器解析结果–-
1700479243
1700479244
域名:www.xxx.com
1700479245
1700479246
IP地址:251.41.14.230
1700479247
1700479248
解析者:上海DNS服务器
1700479249
1700479250
请输入域名(输入N退出):n
1700479251
1700479252
可以看出,所有的解析结果都是由上海DNS服务器返回的,这才是真正的DNS解析过程。如何知道它是由上海DNS服务器解析的还是由别的DNS服务器解析的呢?很好办,把代码拷贝过去,然后调试跟踪一下就可以了。或者仔细看看代码,理解一下代码逻辑也可以非常清楚地知道它是如何解析的。
1700479253
1700479254
再仔细看一下我们的代码逻辑,上下两个节点之间的关系很微妙,很有意思。
1700479255
1700479256
❑下级节点对上级节点顶礼膜拜
1700479257
1700479258
比如我们输入的这个域名www.xxx.com,上海域名服务器只知道它是由父节点(中国顶级DNS服务器)解析的,而不知道父节点把该请求转发给了更上层节点(全球顶级DNS服务器),也就是说下级节点关注的是上级节点的响应,只要是上级反馈的结果就认为是上级的。www.xxx.com这个域名最终是由最高节点(全球顶级DNS服务器)解析的,它把解析结果传递给第二个节点(中国顶级DNS服务器)时的签名为“全球顶级DNS服务器”,而第二个节点把请求传递给首节点(上海DNS服务器)时的签名被修改为“中国顶级DNS服务器”。所有从上级节点反馈的响应都认为是上级节点处理的结果,而不追究到底是不是真的是上级节点处理的。
1700479259
1700479260
❑上级节点对下级节点绝对信任
1700479261
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
1700479287
设计模式之禅 第33章 跨战区PK
1700479288
1700479289
创建类模式描述如何创建对象,行为类模式关注如何管理对象的行为,结构类模式则着重于如何建立一个软件结构,虽然三种模式的着重点不同,但是在实际应用中还是有重叠的,会出现一种模式适用、另外一种模式也适用的情况,我们到底该选用哪一个设计模式呢?本章就带领读者进入不同类设计模式PK的世界中,让你清晰地认识到各个模式的不同点以及它们的特长。
1700479290
[
上一页 ]
[ :1.700479241e+09 ]
[
下一页 ]