3

翻译翻译什么是适配器模式?

 2 years ago
source link: https://blog.51cto.com/u_13961087/5242247
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

翻译翻译什么是适配器模式?

原创

掘金安东尼 2022-04-22 10:48:34 ©著作权

文章标签 适配器模式 谷歌地图 百度地图 文章分类 JavaScript 前端开发 阅读数171

说到:适配器,大家一定不会陌生:

所有的充电头,就是适配器,用于适配电源插孔和需要充电的设备;

同理,适配器模式(Adapter Pattern)是作为两个不兼容的接口之间的桥梁。这种类型的设计模式属于【结构型模式】,它结合了两个独立接口的功能。

代码示例也非常直观:

class Adapter {
specificRequest() {
return '手机充电接口'
}
}
class Target {
constructor() {
this.adapter = new Adapter()
}
request() {
let info = `${this.adapter.specificRequest()}---通过适配器接入到---充电插头`
return info
}
}
let target = new Target()
console.info(target.request())

// 手机充电接口---通过适配器接入到---充电插头

当我们有动机地修改一个正常运行的系统的接口,这时应该考虑使用适配器模式。

不过,它也有一个要特别注意的缺点,即:过多地使用适配器,会让系统非常零乱,不易整体进行把握。比如,明明看到调用的是 A 接口,其实内部被适配成了 B 接口的实现,一个系统如果太多出现这种情况,无异于一场灾难。因此如果不是很有必要,可以不使用适配器,而是直接对系统进行重构。

不过,它的好处呢,就是:可以让任何两个没有关联的类一起运行。 2、提高了类的复用。

// 使用ES6改写适配器实现地图SDK统一渲染
class googleMap {
show() {
console.log('开始渲染谷歌地图');
}
}
class baiduMap {
display() {
console.log('开始渲染百度地图');
}
}
class baiduMapAdapter extends baiduMap {
constructor() {
super();
}
show() {
this.display();
}
}
// 外部调用者
function renderMap(map) {
map.show(); // 统一接口调用
}
renderMap(new googleMap());
renderMap(new baiduMapAdapter());

// 开始渲染谷歌地图
// 开始渲染百度地图

OK,以上就是本篇分享,你“学废”了吗?

我是掘金安东尼,输出暴露输入,技术洞见生活。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK