关于适配器模式我所知道的

简介: 关于适配器模式我所知道的

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第3天,点击查看活动详情

关键词:结构型 适配器模式 adapter 事后设计

解决什么问题?

image.png


适配器模式是一种结构型设计模式。

使用目的是解决两个组件间的接口不兼容的问题。通常在已有程序中使用, 让相互不兼容的类能很好地合作。 其实是用来弥补系统设计缺陷的一种设计。(亡羊补牢

典型的应用场景是:后端返回的数据结构和表单组件需要的数据结构不一致。

遇到这种情况,我们有两种处理方法:

  1. 找后端修改返回字段和结构
  2. 获取数据之后前端做一层适配,自行处理。

如果结论是后者,这时候我们就可以使用双向适配器来兼容两者。


如何实现


/**
 * Adaptee => Target 报错
 * Adaptee => Adapter => Target 成功
 */
class Target {
  public request(): string {
    return '目标行为';
  }
}
class Adaptee {
  public specificRequest(): string {
    return '为行殊特eetpadA';
  }
}
class Adapter extends Target {
  private adaptee: Adaptee;
  constructor(adaptee: Adaptee) {
    super();
    this.adaptee = adaptee;
  }
  public request(): string {
    const result = this.adaptee.specificRequest().split('').reverse().join('');
    return `适配器转换${result}`;
  }
}

测试代码

function clientCode(target: Target) {
  console.log(target.request());
}
// 直接执行 target
const target = new Target();
clientCode(target);
// 直接执行 adaptee
const adaptee = new Adaptee();
console.log(`Adaptee: ${adaptee.specificRequest()}`);
//通过是配置执行 adaptee
const adapter = new Adapter(adaptee);
clientCode(adapter);

与其他设计模式的区别

代理模式 桥接模式 装饰器模式 适配器模式
事后设计 事前设计 事后设计 事后设计
不改变原始类接口,提供跟原始类相同的接口 写代码之前就要把接口部分和实现部分分离,从而让它们可以较为容易、也相对独立地加以改变。 不改变原始类接口,提供跟原始类相同的接口, 提供跟原始类不同的接口。
为原始类定义一个代理类,主要目的是控制访问,而非加强功能。 加强原始类功能,支持多个装饰器的嵌套使用。


目录
相关文章
|
16天前
|
设计模式
适配器模式
​ 如有错误或有补充,以及任何改进的意见,请留下您的高见 概念 适配器模式是一种结构型设计模式,它可以将一个类的接口转换成客户端所期望的另一个接口,从而使得原本由于接口不兼容而不能一起工作的两个类能够协同工作。 适配器模式中的角色包括目标接口(Target)、需要适配的类(Adaptee)和适配器(Adapter)。目标接口是客户端所期望的接口,需要适配的类是需要被适配的类或适配者类,适配器则是将需要适配的类的接口转换成目标接口的实现类。         源(Adaptee):这个角色通常是一个已经存在的类或者接口,其方法或行为与客户端所期望的不完全一致。源角色定义了需要被适配的接口,这
15 0
|
5月前
|
设计模式 C++
结构型 适配器模式
结构型 适配器模式
17 0
|
5月前
|
设计模式
【适配器模式】—— 每天一点小知识
【适配器模式】—— 每天一点小知识
|
8月前
|
Java API
适配器模式的运用
适配器模式的运用
51 0
|
9月前
|
设计模式 数据库 C++
2023-6-15-第六式适配器模式
2023-6-15-第六式适配器模式
67 0
|
Java 程序员 API
结构型模式-适配器模式
结构型模式-适配器模式
71 0
|
设计模式
我学会了,适配器模式
适配器模式属于结构型模式,这个类型的设计模式总结出了 类、对象组合后的经典结构,将类、对象的结构和使用解耦了,花式的去借用对象。
78 0
我学会了,适配器模式
|
设计模式 Java
【玩转23种Java设计模式】结构型模式篇:适配器模式
适配器模式(Adapter Pattern)将某个类的接口转换成客户端期望的另一个接口表示,主的目的是兼容性,让原本因接口不匹配不能一起工作的两个类可以协同工作。适配器模式属于结构型模式,主要分为三类:类适配器模式、对象适配器模式、接口适配器模式。
【玩转23种Java设计模式】结构型模式篇:适配器模式
|
设计模式 Java Spring
适配器模式详解与应用
引用一个最经典的例子,我们自己家里的电压都是220V的,而早期的手机充电时所用的都是5V的电压。要想让手机在220V的家庭电压下充电,就需要一个电源适配器。在编程中,也经常会出现一个类程序无法直接去使用,而需要通过适当变换的行为抽象出来的设计模式就是适配器模式。
|
Java
适配器模式与桥接模式(1)
适配器模式与桥接模式(1)
152 0