作者:Kangol LI
链接:https://www.zhihu.com/question/35225845/answer/61876681
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
更形象一点表示:
拦截器:把水流变小点,把鱼都拦住!顺便发个电
<img src="https://pic3.zhimg.com/50/8ad0b7bc4e9185dfd2f777e96ae24972_hd.jpg" data-rawwidth="720" data-rawheight="689" class="origin_image zh-lightbox-thumb" width="720" data-original="https://pic3.zhimg.com/8ad0b7bc4e9185dfd2f777e96ae24972_r.jpg">
监听器:题主一定会说上面是个水利工程,其实发电的原理是这样的。。
<img src="https://pic3.zhimg.com/50/22092c04c0ccd7d1aab1db022fb25ba0_hd.jpg" data-rawwidth="720" data-rawheight="689" class="origin_image zh-lightbox-thumb" width="720" data-original="https://pic3.zhimg.com/22092c04c0ccd7d1aab1db022fb25ba0_r.jpg">
链接:https://www.zhihu.com/question/35225845/answer/61876681
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
启动顺序:监听器 > 过滤器 > 拦截器
以下回答从设计模式的角度分析它们的不同。一个个来。
过滤器(Filter):当你有一堆东西的时候,你只希望选择符合你要求的某一些东西。定义这些要求的工具,就是过滤器。
拦截器(Interceptor):在一个流程正在进行的时候,你希望干预它的进展,甚至终止它进行,这是拦截器做的事情。
监听器(Listener):当一个事件发生的时候,你希望获得这个事件发生的详细信息,而并不想干预这个事件本身的进程,这就要用到监听器。
======================================
![](https://i-blog.csdnimg.cn/blog_migrate/cc3fe59d16c70f087acaef3280c12606.jpeg)
更形象一点表示:
过滤器:只想要在一堆东西里面选个B
![](https://i-blog.csdnimg.cn/blog_migrate/135de5e84d13e1d0d17d44eb4c476310.png)
<img src="https://pic3.zhimg.com/50/8ad0b7bc4e9185dfd2f777e96ae24972_hd.jpg" data-rawwidth="720" data-rawheight="689" class="origin_image zh-lightbox-thumb" width="720" data-original="https://pic3.zhimg.com/8ad0b7bc4e9185dfd2f777e96ae24972_r.jpg">
![](https://i-blog.csdnimg.cn/blog_migrate/91925737fc442df9799cda9b70e8382c.png)
<img src="https://pic3.zhimg.com/50/22092c04c0ccd7d1aab1db022fb25ba0_hd.jpg" data-rawwidth="720" data-rawheight="689" class="origin_image zh-lightbox-thumb" width="720" data-original="https://pic3.zhimg.com/22092c04c0ccd7d1aab1db022fb25ba0_r.jpg">
![](https://i-blog.csdnimg.cn/blog_migrate/66c4e824b267f0516d9a7cdd4ccba600.png)