第六章 设计模式 - 结构型 - 适配器模式

适配器模式的概念

适配器模式(Adapter)是将一个类(对象)的接口(方法或属性)转化成客户希望的另外一个接口(方法或属性)
适配器模式使得原本由于接口不兼容而不能一起工作的那些类(对象)可以一些工作。
适配器又称包装器(wrapper)。
核心就是 适配 做 兼容性 处理

适配器模式示例代码

// typetypec耳孔
class Cellular{
charge(){
return 'typec耳孔'
}
}
// 适配器转换为普通耳机孔
class Adaptor{
constructor(){
this.Cellular = new Cellular()
}
charge(){
let v = this.Cellular.charge()
return `${v}=>普通耳机圆孔`
}
}
// 然后就能正常使用了
class Headset{
constructor(){
this.Adaptor = new Adaptor()
}
use(){
console.log(this.Adaptor.charge())
}
}
let headset = new Headset()
headset.use()

适配器模式的场景

1、在平时我们开发中,我们可能会遇见这样的场景:当我们试图调用某个模块或者对象的接口时,却发现这个接口的格式不符合我们的需求。这时有两种解决办法:第一种是修改原来的接口实现,但如果原来的代码很复杂,例如是一个库或框架,更改原代码就显得很不现实了。所以这时就需要使用今天所讲的第二种办法:创建一个适配器,将原接口转换为客户希望的另一个接口,客户只需要使用适配器即可。
2、比如我们需要请求后端数据,但我们默认请求的方法是GET请求,但后端用的是post请求, 还有后端返回的数据格式是字符串的,但我们需要的是对象类型的数据,因此前端就需要做兼容处理
1、对请求参数的适配
2、对后端返回的数据进行适配
function ajax(options){
let defaultOptions = {
methods:'GET',
dataType:'json'
}
for(let attr in options){
// 这里对请求参数做了适配
defaultOptions[attr] = options[attr] || defaultOptions[attr]
}
}
function transform(str){
return JSON.parse(str)
}
ajax({
url:'http://www.baidu.com',
methods:'post',
success(str){
// 服务器返回来的是一个纯的json字符串
// 我们可以转换成我们想要的格式
let result = transform(str)
}
})

适配器模式的总结其一

小结
不改变原有接口的情况下,统一接口、统一入参、统一出参、统一规则,符合开发封闭原则。
使用场景
拥抱变化,兼容代码。

适配器模式的总结其二

优点
1、可以让任何两个没有关联的类一起运行。
2、提高了类的复用。
3、适配对象,适配库,适配数据
缺点
1、额外对象的创建,非直接调用,存在一定的开销( 且不像代理模式在某些功能点上可实现性能优化 )
2、如果没必要使用适配器模式的话,可以考虑重构,如果使用的话,尽量把文档完善
场景
1、整合第三方SDK
2、封装旧接口
posted @   caix-1987  阅读(5)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示