为什么servlet里面的过滤器链采用的是责任链模式,而不采用代理模式

J2EE 码拜 10年前 (2015-04-04) 1424次浏览 0个评论

如题,一道面试题。
为什么servlet里面的过滤器链采用的是责任链模式,而不采用代理模式,进行层层代理。
请大家谈谈自己的看法。

为什么servlet里面的过滤器链采用的是责任链模式,而不采用代理模式
100分
这个我还真没想过,看楼下回答~
为什么servlet里面的过滤器链采用的是责任链模式,而不采用代理模式
100分
2个不是一个东西。
责任链 强调的是一个链。
为什么servlet里面的过滤器链采用的是责任链模式,而不采用代理模式
涨姿势了
为什么servlet里面的过滤器链采用的是责任链模式,而不采用代理模式
100分
我不知道楼主为何会想到代理模式,有相似的地方(对于我来说,不需要知道具体是谁把活干了,两个模式都有这个特点),但两个类完全不是一回事。两个的区别,我写一段代码模拟一下(实际肯定不是这样,但是道理类似,这两种代码你会用哪个?你就知道何为不用代理模式了):

		//责任链
		if(..){
			..
			return ..;
		}
		if(..){
			return ..;
		}
		if(..){
			return ..;
		}
		if(..){
			return ..;
		}
		if(..){
			return ..;
		}
		...

		//代理(你说的层层代理)
		if(..){
			if(..){
				if(..){
					if(..){
						if(..){
							..
							return ..;
						}
					}
				}
			}
		}

代理模式主要为了在我不方便直接引用或者调用干活的类才搞的,代理类就是接活,被代理类干活,实现的是这个目的。

责任链对于我来说,同样不知道具体的活是谁干的,但是他只要有下家,就传给下家干活;如果没有下家,就自行干了,代理模式的代理类理论上不具备干活的功能。

希望在讨论。


CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明为什么servlet里面的过滤器链采用的是责任链模式,而不采用代理模式
喜欢 (0)
[1034331897@qq.com]
分享 (0)

文章评论已关闭!