适配器模式

适配器模式(Adaper):将一个类(对象)的接口(方法或者属性)转化成另外一个接口,以满足用户的需要,使类(对象)之间接口的不兼容问题通过适配器得以解决。实际上就是为两个代码库所写的代码兼容允许而书写额外的代码。

例如一个A框架想要适配JQuery对象

A.g = function(id){
    //通过JQuery获取JQuery对象,然后返回第一个成员
    return $(id).get(0)
}
A.on = function(id,type,fn){
    //如果传递参数是字符串则以id处理,否则以元素对象处理
    var dom = typeof id === 'string' ? $('#'+id) : $(id);
    dom.on(type,fn)
}

适配器还有很多用途,例如传递多个参数时,记住这些参数的顺序是困难的,所以经常以一个参数对象方式传入,如果有一些参数没有传入,一些参数有默认值等,可以使用适配器来适配传入这个参数对象。

数据适配

var arr = ['JavaScript','book','前端编程语言','8月1日'];
//每个数组成员代表的意义不同,通常将其适配成对象形式
var obj = {
    name:'',
    type:'',
    title:'',
    time:''
}
//进行适配
function arrToObjAdapter(arr){
    return {
        name:arr[0],
        type:arr[1],
        title:arr[2],
        time:arr[3]
    }
}
var adapterData = arrToObjAdapter(arr);
console.log(adapterData) //{ name:'JavaScript',type:'book',title:'前端编程语言',time:'8月1日'}

解决前后端的数据依赖,前端程序不再为后端传递的数据所束缚,如果后端因框架改变导致传递的数据结构发生变化,使用适配器可以保证返回的数据是可用的安全的数据。

//为简化模型,使用Jquery的ajax方法 理想数据是一个一维数组
function ajaxAdapter(data){
    return [data['key1'],data['key2'],data['key3']]
}
$.ajax({
    url : 'xxx.php',
    success: function(data,status){
        if(data){
            //使用适配后的数据
            doSomething(ajaxAdapter(data));
        }
    }
})
设计模式 文章被收录于专栏

设计模式

全部评论

相关推荐

05-12 10:10
已编辑
门头沟学院 人工智能
写这篇之前我犹豫了挺久。一方面是怕被人骂,"又一个收割焦虑的转行帖";另一方面是看了太多用 GPT 套娃出来的「学习路线」文章,AI 味重得让人没法读完。所以这篇全是亲身踩过的坑,时间线、用过的项目、当时的心路全都尽量原样写出来。如果你是大学生在迷茫要不要转 AI,或者已经在转的路上,希望能给点参考。 一个反共识的开场:你以为进 OpenAI 的人都是博士? 先讲个故事,跟我没关系,但跟所有想转 AI 的人都有关系。 OpenAI 的 Sora 团队(就是搞文生视频那个)一共 13 个人。这里面有两个人特别有意思: Will DePue,密歇根大学计算机系,直接辍学了。17...
_hengheng:我也本,也算是做ai相关,我最开始感觉做ai工程师有多么多么困难,后来发现懂了原理后整体训练完全可以看成一个流程化的内容,开源方案太多了,大多基本都是按着模子在自家业务上做各种操作,就算是大厂的小部门也没那么多资源去训基模,反而更多的是像怎么把技术往业务方向靠近了,不过当前时代如果本科学历没那么好加上自己执行力不是特别强还真不建议走ai工程师这条路,可以试试其他ai的偏业务方向,不然校招不太好杀出来
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务