javascript適配器模式和組合模式原理與實(shí)現(xiàn)方法詳解
一、適配器模式
1、作用:主要解決兩個軟件實(shí)體間接口不兼容的問題
2、實(shí)例
(1)地圖渲染的適配
//谷歌和百度地圖的渲染地圖調(diào)用的方式不一樣 var googleMap = { show: function () { console.log('開始渲染谷歌地圖') } } var BaiduMap = { display: function () { console.log('開始渲染谷歌地圖') } } //我們 程序中的渲染地圖方法入下 var renderMap = function (map) { if (map.show instanceof Function) { map.show() } } //baiduMap 來源于第三方,不能改變其內(nèi)部構(gòu)造,那么需要對百度地圖做一下適配 var BaiduAdapter = { show: function () { return BaiduMap.display() } }
(2)接口數(shù)據(jù)格式的統(tǒng)一適配
//接口數(shù)據(jù)格式的統(tǒng)一適配 var cityData = [{ name: 'shenzhen', id: 11 }, { name: 'guangzhou', id: 12 } ] //新數(shù)據(jù)源 var newcityData = { 'shenzhen': 11, 'guanzghou': 12, 'zhuhai': 12 } //數(shù)據(jù)格式轉(zhuǎn)換適配器 var addressAdapter = function (data) { var address = []; for (var i in data) { var objTemp = {}; objTemp.name = i; objTemp.id = data[i]; address.push(objTemp) } return address; } console.log(addressAdapter(newcityData))
運(yùn)行結(jié)果如下:
二、組合模式
1、圖片示意
2、組合模式的例子--掃描文件夾
文件夾和文件之間的關(guān)系,非常適用組合模式來描述。文件夾里既可以包含文件,又可以包含其他文件夾。
//掃描文件夾 folder 和 file 兩個類 var Folder = function (name) { this.name = name; this.file = [] } Folder.prototype.add = function (file) { this.file.push(file) } Folder.prototype.scan = function () { console.log('開始掃描文件夾'+this.name) for(var i=0;i<this.file.length;i++){ this.file[i].scan() } } var File = function(name){ this.name = name; } File.prototype.add = function(){ throw new Error('文件下面不能再添加文件') } File.prototype.scan = function () { console.log('開始掃描文件'+this.name) } var chinese = new File('chinese') var math = new File('math') var English = new File('English') var hobby = new File('hobby') var folder1=new Folder('subject'); folder1.add(chinese) folder1.add(math) folder1.add(English) var folder2=new Folder('entertainment') folder2.add(hobby) var folder=new Folder('doc') folder.add(folder1) folder.add(folder2) console.log(folder) folder.scan()
運(yùn)行結(jié)果如下:
更多設(shè)計模式相關(guān)知識點(diǎn),還可以參考本站文章:
http://www.dbjr.com.cn/article/252965.htm
http://www.dbjr.com.cn/article/27973.htm
- JavaScript適配器模式詳解
- javascript設(shè)計模式之Adapter模式【適配器模式】實(shí)現(xiàn)方法示例
- JavaScript設(shè)計模式之適配器模式介紹
- 深入理解JavaScript系列(39):設(shè)計模式之適配器模式詳解
- 詳解JavaScript實(shí)現(xiàn)設(shè)計模式中的適配器模式的方法
- javascript設(shè)計模式 – 適配器模式原理與應(yīng)用實(shí)例分析
- JavaScript設(shè)計模式學(xué)習(xí)之適配器模式
- JavaScript 設(shè)計模式之組合模式解析
- JavaScript組合模式學(xué)習(xí)要點(diǎn)
- 設(shè)計模式中的組合模式在JavaScript程序構(gòu)建中的使用
- javascript設(shè)計模式 – 組合模式原理與應(yīng)用實(shí)例分析
- JavaScript設(shè)計模式開發(fā)中組合模式的使用教程
相關(guān)文章
微信小程序自定義tab實(shí)現(xiàn)多層tab嵌套
這篇文章主要為大家詳細(xì)介紹了微信小程序自定義tab實(shí)現(xiàn)多層tab嵌套,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-07-07js如何實(shí)現(xiàn)小程序wx.arrayBufferToBase64方法實(shí)例
這篇文章主要給大家介紹了關(guān)于js如何實(shí)現(xiàn)小程序wx.arrayBufferToBase64方法的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2022-03-03layui監(jiān)聽工具欄的實(shí)例(操作列表按鈕)
今天小編就為大家分享一篇layui監(jiān)聽工具欄的實(shí)例(操作列表按鈕),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-09-09當(dāng)鼠標(biāo)滑過超鏈接出現(xiàn)提示框效果實(shí)例
當(dāng)鼠標(biāo)滑過超鏈接出現(xiàn)提示框效果實(shí)例,需要的朋友可以參考一下2013-04-04原生Javascript/原生JS修改CSS樣式的4種方式簡單示例
在網(wǎng)頁開發(fā)中我們經(jīng)常會用到JavaScript來操作網(wǎng)頁元素,其中一個常見的操作就是修改元素的CSS樣式,下面這篇文章主要給大家介紹了關(guān)于原生Javascript/原生JS修改CSS樣式的4種方式,需要的朋友可以參考下2024-03-03javascript中BOM基礎(chǔ)知識總結(jié)
本文主要對javascript中BOM基礎(chǔ)知識進(jìn)行總結(jié)。具有很好的參考價值,下面跟著小編一起來看下吧2017-02-02JavaScript動態(tài)修改網(wǎng)頁元素內(nèi)容的方法
這篇文章主要介紹了JavaScript動態(tài)修改網(wǎng)頁元素內(nèi)容的方法,實(shí)例分析了javascript操作html元素的技巧,具有一定參考借鑒價值,需要的朋友可以參考下2015-03-03JavaScript程序設(shè)計之JS調(diào)試
這篇文章主要介紹了JavaScript程序設(shè)計中的重要環(huán)節(jié):JS調(diào)試,本文通過一個加法器,介紹JS如何調(diào)試,感興趣的小伙伴們可以參考一下2015-12-12JS使用面向?qū)ο蠹夹g(shù)實(shí)現(xiàn)的tab選項(xiàng)卡效果示例
這篇文章主要介紹了JS使用面向?qū)ο蠹夹g(shù)實(shí)現(xiàn)的tab選項(xiàng)卡效果,結(jié)合具體實(shí)例形式分析了js面向?qū)ο蠹夹g(shù)與tab選項(xiàng)卡功能的具體實(shí)現(xiàn)技巧,需要的朋友可以參考下2017-02-02