责任链模式、适配器模式

责任链模式

理解(what):

        责任链模式就是某对象对其他对象的引用,其他对象再引用其他对象,形成一个链状的结构,可以是环形、直线等。发起的请求在这个责任链中传递,直到链上某一个节点(对象)处理了该请求。那么可以理解,发起请求的客户端并不知道是哪个节点处理了请求,它只是把请求发送而不管其他的事。

优点(when,why):

        1.发送者与接收者之间的耦合度降低(解耦)

        2.可以灵活添加新的责任链中的对象

缺点:

        1.不能保证请求一定被接收

        2.一定程度上影响性能

应用场景(where):

        1.jsp servlet 的filter

        2.dom事件冒泡机制

                事件冒泡机制的流程

                 如果div下的form表单存在button,且给这三个dom都绑定click事件(简单的+1功能),那么当按钮点击后,就会发现+3,这是因为捕获到button的click事件,再向上传播到form,此时因为form也绑定了click事件,然后在从form开始冒泡到div,div也绑定了click事件,所以又加了1.

                什么是事件委托?

                    在一个课间操,大家都饿了,想要去小卖部买吃的,但是一个一个人去买效率太低了,于是大家想了个办法,委托班长下去帮忙买,班长记下大家要的零食,买完之后再把零食发给大家,这就是事件委托。

                与事件委托的关系

                    如果将body绑定了addEventListener,(body内有div处理值+1,div内有form处理值+2,form内有button处理值+3),本来每个节点都有要处理的函数,这样代码写起来就很冗余,所以我们将处理的函数都交给了父节点body,也就是其他节点的响应逻辑都委托给body,让body来完成相应逻辑,自己不实现逻辑,这就是事件委托模式


                如何避免多次触发click

                    1.在事件绑定触发后,在函数体内使用removeEventListener("click",点击方法,false)


引用MKing321103 的回答  

                        2.为click绑定的函数添加return false

        3.javaweb中Encoding的处理,structs的拦截器

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,951评论 19 139
  • 请参看我github中的wiki,不定期更新。https://github.com/ivonzhang/Front...
    zhangivon阅读 7,179评论 2 19
  • 1.JQuery 基础 改变web开发人员创造搞交互性界面的方式。设计者无需花费时间纠缠JS复杂的高级特性。 1....
    LaBaby_阅读 1,200评论 0 1
  • “高二上学期,我差点自杀了!” 林华的话,让我大吃一惊。他是我的同事,二十三岁。我见过的最热爱生活、热爱生命,最有...
    ZHANG顽石点头阅读 446评论 1 11
  • 这么大只的写实彩铅考拉,不知道会被我画成什么样子
    一只好coffee阅读 99评论 2 0