责任链模式
理解(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)

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

3.javaweb中Encoding的处理,structs的拦截器
网友评论