亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁技術(shù)文章
文章詳情頁

JavaScript設(shè)計(jì)模式學(xué)習(xí)之適配器模式

瀏覽:11日期:2023-10-02 11:55:38
概述

適配器模式是設(shè)計(jì)模式行為型模式中的一種模式;

定義:

適配器用來解決兩個(gè)已有接口之間不匹配的問題,它并不需要考慮接口是如何實(shí)現(xiàn),也不用考慮將來該如何修改;適配器不需要修改已有接口,就可以使他們協(xié)同工作;

白話解釋:

你買了某種電器產(chǎn)品,準(zhǔn)備帶回家好好感受該款產(chǎn)品的魅力;結(jié)果帶回家之后準(zhǔn)備通電使用的時(shí)候,發(fā)現(xiàn)該產(chǎn)品僅支持兩孔插座,而你家里的電源插座都是三孔插座;這個(gè)時(shí)候你總不能又跑去電器專賣店退貨吧;突然靈機(jī)一動,你想起來了家里還有多功能電源插座,而多功能電源插座恰好就是三孔,于是你拿出你的多功能電源插座插上電源插座,再拿你電器產(chǎn)品的電源插座插在多功能插座上面的兩孔插座上,開始享受美滋滋的生活;這里的多功能插座就是一個(gè)適配器;

代碼實(shí)現(xiàn)

var googleMap = { show: function(){console.log( ’開始渲染谷歌地圖’ ); }};var baiduMap = { show: function(){console.log( ’開始渲染百度地圖’ ); }};var renderMap = function( map ){ if ( map.show instanceof Function ){map.show(); }};renderMap( googleMap ); // 開始渲染谷歌地圖renderMap( baiduMap ); // 開始渲染百度地圖

當(dāng)然上面的代碼是能夠正常運(yùn)行的,這得益于這兩個(gè)對象中的參數(shù)名都是一樣的,所以才能夠正常的運(yùn)行和顯示;

var googleMap = { show: function(){console.log( ’開始渲染谷歌地圖’ ); }};var baiduMap = { display: function(){console.log( ’開始渲染百度地圖’ ); }};

突然有一天如果baiduMap的方法名改變了呢?那么我們再跟上面一樣運(yùn)行肯定是會報(bào)錯的,因?yàn)閎aiduMap對象中已經(jīng)沒有了show()這個(gè)方法了;

使用適配器模式來修改:

var googleMap = { show: function(){console.log( ’開始渲染谷歌地圖’ ); }};var baiduMap = { display: function(){console.log( ’開始渲染百度地圖’ ); }};var baiduMapAdapter = { show: function(){return baiduMap.display(); }};renderMap( googleMap ); // 開始渲染谷歌地圖renderMap( baiduMapAdapter ); // 開始渲染百度地圖

在這段代碼中適配器做的事情其實(shí)很簡單,就是創(chuàng)建了一個(gè)對象,添加了一個(gè)同名的show()方法,然后在適配器里面調(diào)用了baiduMap.display()方法,這樣我們只需要在調(diào)用baiduMap的時(shí)候調(diào)用我們的適配器即可達(dá)到預(yù)期效果;

我們作為前端開發(fā)人員,對頁面上期待得到的數(shù)據(jù)和數(shù)據(jù)格式肯定是比較了解的,但是在前后端分離的開發(fā)模式中有的時(shí)候會遇到這種尷尬的處境:

我們都知道很多UI組件或者工具庫會按指定的數(shù)據(jù)格式進(jìn)行渲染,但是這個(gè)時(shí)候后端是不知道的;所以可能接口出來的數(shù)據(jù)我們是不能直接正常的在頁面上渲染的,而此時(shí)老板催促我們趕緊上線,而后端堅(jiān)持認(rèn)為數(shù)據(jù)格式?jīng)]問題,堅(jiān)決不修改;這個(gè)時(shí)候我們可以通過適配器模式來前端格式化數(shù)據(jù);

后端返回的json數(shù)據(jù)格式:

[ { 'day': '周一', 'uv': 6300 }, { 'day': '周二', 'uv': 7100 }, { 'day': '周三', 'uv': 4300 }, { 'day': '周四', 'uv': 3300 }, { 'day': '周五', 'uv': 8300 }, { 'day': '周六', 'uv': 9300 }, { 'day': '周日', 'uv': 11300 }]

Echarts圖表圖形需要的數(shù)據(jù)格式:

['周二', '周二', '周三', '周四', '周五', '周六', '周日'] //x軸的數(shù)據(jù)[6300. 7100, 4300, 3300, 8300, 9300, 11300] //坐標(biāo)點(diǎn)的數(shù)據(jù)

雖然心里苦,但還是要解決問題!使用適配器來解決:

//x軸適配器function echartXAxisAdapter(res) { return res.map(item => item.day);}//坐標(biāo)點(diǎn)適配器function echartDataAdapter(res) { return res.map(item => item.uv);}

創(chuàng)建兩個(gè)函數(shù)分別對數(shù)據(jù)按照echarts所需要的數(shù)據(jù)格式進(jìn)行格式化處理即可解決問題;這兩個(gè)方法其實(shí)就是一個(gè)適配器,把指定的數(shù)據(jù)丟進(jìn)去即可按照指定規(guī)則輸出我們期待得到的數(shù)據(jù)格式;

總結(jié)

個(gè)人認(rèn)為適配器模式其實(shí)是一種亡羊補(bǔ)牢式的設(shè)計(jì)模式,如果在項(xiàng)目開發(fā)的開始階段我們就知道我們期待的數(shù)據(jù)格式或者方法名等,我們就可能永遠(yuǎn)都用不到適配器模式;但是項(xiàng)目的迭代往往是不可預(yù)期的,當(dāng)項(xiàng)目迭代之后數(shù)據(jù)格式或者方法名發(fā)生變化之后,我們通??梢允褂眠m配器模式來進(jìn)行適配解決;當(dāng)然了,最好的解決辦法就是項(xiàng)目開發(fā)過程中前后端協(xié)商討論數(shù)據(jù)格式、文件名等代碼規(guī)范,這樣是對項(xiàng)目的開發(fā)效率是會有很大的提升的;

以上就是JavaScript設(shè)計(jì)模式學(xué)習(xí)之適配器模式的詳細(xì)內(nèi)容,更多關(guān)于JavaScript設(shè)計(jì)模式的資料請關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標(biāo)簽: JavaScript
相關(guān)文章:
主站蜘蛛池模板: 99热久久国产综合精品久久国产 | 成人区视频爽爽爽爽爽 | 搡的我好爽视频在线观看 | 男人黄女人色视频在线观看 | 超级碰碰碰免费视频播放 | 欧美叼嘿 | 一级片免费在线 | 国产日产高清欧美一区二区三区 | 欧美日韩一区二区三在线 | 91麻豆精品国产自产在线 | 操美女国产 | 在线精品国产 | 看片视频在线观看 | 中国国产高清一级毛片 | 国产欧美另类久久久品 | 在线观看的毛片 | 亚洲+自拍+色综合图区一 | 精品国产日韩亚洲一区在线 | 找国产毛片看 | 亚洲国产系列一区二区三区 | 亚洲国产色婷婷精品综合在线观看 | 免费二级c片在线观看a | 草草草网站 | 免费xxxxx大片在线观看影视 | 久久中文字幕不卡一二区 | 久久中文精品 | 免费一区二区三区免费视频 | 黄色在线免费观看视频 | 日本一区二区三区有限公司 | 日本免费大片免费视频 | 国产美女视频做爰 | 自拍视频第一页 | 国内在线网友露脸自拍 | 久久婷婷是五月综合色狠狠 | 久久99爰这里有精品国产 | 国产最爽的乱淫视频国语对 | 激情亚洲视频 | 久久久在线视频精品免费观看 | 亚洲国产成人久久精品影视 | 国产成人精选免费视频 | 亚洲自拍激情 |