责任链模式、适配器模式

2018-04-01  本文已影响0人  凉拌姨妈好吃

责任链模式

理解(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来完成相应逻辑,自己不实现逻辑,这就是事件委托模式

引用自 解析Javascript事件冒泡机制

                如何避免多次触发click

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

引用MKing321103 的回答  

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

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

上一篇 下一篇

猜你喜欢

热点阅读