适配器模式
2022/4/17 大约 1 分钟
将一个类的接口转换成客户希望的另外一个接口,使得原本由于接口不兼容而不能一起工作的那些类能一起工作。适配器模式分为类结构型模式和对象结构型模式两种,前者类之间的耦合度比后者高,且要求程序员了解现有组件库中的相关组件的内部结构,所以应用相对较少些。
该模式的主要优点如下:
- 客户端通过适配器可以透明地调用目标接口。
- 复用了现存的类,程序员不需要修改原有代码而重用现有的适配者类。
- 将目标类和适配者类解耦,解决了目标类和适配者类接口不一致的问题。
- 在很多业务场景中符合开闭原则。
该模式的主要缺点如下:
- 适配器编写过程需要结合业务场景全面考虑,可能会增加系统的复杂性。
- 增加代码阅读难度,降低代码可读性,过多使用适配器会使系统代码变得凌乱。
# 示例一
我们公司想用
log
来代替console.log
,这就是典型的接口发生了改变。
// 适配器模式的基本结构
var log = (function (){
return window.console.log
})()
1
2
3
4
2
3
4
# 示例二
目前项目使用的A框架,现在改成了jquery,两个框架十分类似,但是有少数几个方法不同
window.A=$;
A.o=function(){
return $.on();
}
A.c=function(){
return c.css();
}
1
2
3
4
5
6
7
2
3
4
5
6
7
# 示例三
为了避免参数不适配产生问题,很多框架会有一个参数适配操作
function f1(obj){
var _default={
name:"xxx",
color:"red",
}
for(var item in _default){
_default[i]=obj[i]||_default[i];
}
}
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10