美文网首页
责任链模式、适配器模式

责任链模式、适配器模式

作者: 凉拌姨妈好吃 | 来源:发表于2018-04-01 01:27 被阅读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的拦截器

相关文章

  • 设计模式书目录

    设计模式 抽象工厂模式 适配器模式 代理模式 模板方法模式 责任链模式

  • JAVA面试题-设计模式书目录

    设计模式 抽象工厂模式 适配器模式 代理模式 模板方法模式 责任链模式

  • 设计模式

    设计模式: 1责任链模式 2桥接模式 3适配器模式 4单例模式 ...

  • [scala]Scala 设计模式笔记

    1 适配器模式 2 装饰模式 3 策略模式 4 责任链模式 5 依赖注入模式

  • 9-2 5大设计模式

    1.哪些设计模式 1.1责任链 1.2桥接模式 1.3适配器 1.4单例模式 1.5命令模式

  • 设计模式分类汇总

    结构型 适配器模式 组合模式 桥接模式 代理模式 装饰者模式 门面模式 享元模式 行为型 责任链模式 命令模式 解...

  • iOS面试之设计模式模块

    设计模式 设计模式内容如下: 责任链模式 桥接模式 命令模式 适配器模式 单例模式 等等 设计原则 单一职责原则 ...

  • 设计模式实践

    工厂模式 策略模式 状态模式 责任链模式 代理模式 单例模式 适配器模式 设计模式原则 面向对象的设计模式有七大基...

  • 设计模式之责任链模式(Chain of Responsibili

    引入责任链模式 责任链模式的实例 责任链模式的分析 责任链模式的优势 责任链模式的应用 引入责任链模式 责任链模式...

  • 常见设计模式

    简单工厂 工厂方法 抽象工厂 单例模式 策略模式 观察者模式 责任链模式 装饰者模式 适配器模式 代理模式 门面模...

网友评论

      本文标题:责任链模式、适配器模式

      本文链接:https://www.haomeiwen.com/subject/fcvncftx.html