适配器模式
适配器 又叫 包装器(wrapper),适配器模式的作用是解决两个软件实体间的接口 不兼容 的问题。使用适配器模式之后,原本由于接口不兼容而不能工作的两个软件实体可以一起工作;
生活中比较形象的例子就是 我们常用的 电源适配器,比如电脑的 电源适配器, 将我们 220v 的交流电源 转换为 电脑电池支持的电压;
作用: 旧接口格式 和 使用者 不兼容; 中间加一个 适配器 转换接口;
适用场景: 1 封装旧接口 ; 2 vue computed
js 简化后的 UML 类图 适配器模式示例:封装旧接口
封装旧接口另一个示例
对于接入不同的 库,都有一个 show 方法 提供给我们使用;
show我们有一个同一个的调用方法;
调用但是当第三个库没有提供 show 方法, 而是 display;
display使用 适配器模式:
适配器模式适配器 另一个常用的场景: 对数据的处理
当我们从第三方接口获取数据 进行渲染的时候
获取数据如果此时我们切换了另外一个数据源,此时的数据结构和原来的 完全不一样,那么我们是不是需要全部重新处理页面的逻辑,此时适配器模式就起到了作用,我们只需要讲这个数据源 适配 成原来的数据格式,而不用去更改 我们原来的页面处理逻辑;
适配器适配器模式主要用来解决 两个已有接口之间不匹配的问题,它不考虑这些接口是怎样实现的,也不考虑它们将来可能会如何演化。适配器模式 不需要改变已有的接口,就能够使它们协同作用;
装饰器模式 和 代理模式 也不会改变原有对象的接口,但 装饰器模式 的作用是为了 给对象增加功能( 适配器不算是增加新功能)。装饰器模式常常形成一条长的装饰链,而适配器模式通常只包装一次。代理模式是为了 控制对对象的访问,通常也只包装一次;
适配器模式 是 原来的 接口已经不能使用,需要一个适配器来做处理; 而 装饰器 是 原来的接口还能使用,只不过是添加一些新功能罢了;
外观模式的作用倒是和适配器比较相似,有人把外观模式看成一组对象的适配器,但外观模式最显著的特点是 定义了一个新的接口;
设计原则验证: 将 旧接口 和 使用者 进行分离 ; 符合 开放封闭 原则。