javascript 适配、代理、装饰者模式的比较

991 阅读2分钟

文章系列

javascript 设计模式之单例模式

javascript 设计模式之适配器模式

javascript 设计模式之装饰者模式

javascript设计模式之代理模式

javascript 适配、代理、装饰者模式的比较

javascript 设计模式之状态模式

javascript 设计模式之迭代器模式

javascript 设计模式之策略模式

javascript 设计模式之观察者模式

javascript 设计模式之发布订阅者模式

适配器模式:将一个类(对象)的接口(方法或属性)转化成客户希望的另外一个接口(方法或属性),使得原本由于接口不兼容而不能一起工作的那些类(对象)可以正常协作。简单理解就是为兼容而生的 “转换器”。

代理模式:使用者无权访问目标对象,中间加代理,通过代理做授权和控制

装饰者(decorator)模式,又名装饰器模式,能够在不改变对象自身的基础上,在程序运行期间给对像动态的添加职责。与继承相比,装饰者是一种更轻便灵活的做法。

适配器: 特点在于兼容,并不预处理请求,直接将请求转接给新方法,新方法与原方法名可以不同。比如兼容接口请求,旧的 ajax 成功适配成新的 fetch 请求; 还有兼容不同浏览器之间的事件处理

代理: 特点在于隔离,要访问本体,要先访问下代理对象,起到保护的作用。控制对本体对象的访问。代理提供的方法提倡与本体方法名相同,比如预加载,以及经纪人与明星的事

装饰者: 特点在于增强,为对象添加功能,可添加多次(比如既打印日志,又添加方法说明),形成装饰链,而适配器或代理只会对原有对象包装一次。比如 React 高阶组件

装饰者模式是“新增行为”,代理模式是“控制访问行为”,适配器模式是"转换行为"。

代理模式可能会有处理,再去调用本体。而适配器模式,则是直接转接给原方法。有个比方:

“代理模式“(严父):学校缴费要一千块,这么多? "适配器模式” (慈母):学校缴费要一千块,给给给。