适配器模式:将一个类(对象)的接口(方法或属性)转化成客户希望的另外一个接口(方法或属性),使得原本由于接口不兼容而不能一起工作的那些类(对象)可以正常协作。简单理解就是为兼容而生的 “转换器”。
代理模式:使用者无权访问目标对象,中间加代理,通过代理做授权和控制
装饰者(decorator)模式,又名装饰器模式,能够在不改变对象自身的基础上,在程序运行期间给对像动态的添加职责。与继承相比,装饰者是一种更轻便灵活的做法。
适配器: 特点在于兼容,并不预处理请求,直接将请求转接给原方法,新方法与原方法名可以不同。比如兼容接口请求,旧的 ajax 成功适配成新的 fetch 请求; 还有兼容不同浏览器之间的事件处理
代理: 特点在于隔离,要访问本体,要先访问下代理对象,起到保护的作用。控制对本体对象的访问。代理提供的方法提倡与本体方法名相同,比如预加载,以及经纪人与明星的事
装饰者: 特点在于增强,为对象添加功能,可添加多次(比如即打印日志,又添加方法说明),形成装饰链,而适配器或代理只会对原有对象包装一次。比如 React 高阶组件
装饰者模式是“新增行为”,代理模式是“控制访问行为”,适配器模式是"转换行为"。