javascript適配器模式和組合模式原理與實現(xiàn)方法詳解
一、適配器模式
1、作用:主要解決兩個軟件實體間接口不兼容的問題
2、實例
(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))運行結(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()運行結(jié)果如下:

更多設(shè)計模式相關(guān)知識點,還可以參考本站文章:
http://www.dhdzp.com/article/252965.htm
http://www.dhdzp.com/article/27973.htm
- JavaScript適配器模式詳解
- javascript設(shè)計模式之Adapter模式【適配器模式】實現(xiàn)方法示例
- JavaScript設(shè)計模式之適配器模式介紹
- 深入理解JavaScript系列(39):設(shè)計模式之適配器模式詳解
- 詳解JavaScript實現(xiàn)設(shè)計模式中的適配器模式的方法
- javascript設(shè)計模式 – 適配器模式原理與應用實例分析
- JavaScript設(shè)計模式學習之適配器模式
- JavaScript 設(shè)計模式之組合模式解析
- JavaScript組合模式學習要點
- 設(shè)計模式中的組合模式在JavaScript程序構(gòu)建中的使用
- javascript設(shè)計模式 – 組合模式原理與應用實例分析
- JavaScript設(shè)計模式開發(fā)中組合模式的使用教程
相關(guān)文章
js如何實現(xiàn)小程序wx.arrayBufferToBase64方法實例
這篇文章主要給大家介紹了關(guān)于js如何實現(xiàn)小程序wx.arrayBufferToBase64方法的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2022-03-03
原生Javascript/原生JS修改CSS樣式的4種方式簡單示例
在網(wǎng)頁開發(fā)中我們經(jīng)常會用到JavaScript來操作網(wǎng)頁元素,其中一個常見的操作就是修改元素的CSS樣式,下面這篇文章主要給大家介紹了關(guān)于原生Javascript/原生JS修改CSS樣式的4種方式,需要的朋友可以參考下2024-03-03
javascript中BOM基礎(chǔ)知識總結(jié)
本文主要對javascript中BOM基礎(chǔ)知識進行總結(jié)。具有很好的參考價值,下面跟著小編一起來看下吧2017-02-02
JavaScript動態(tài)修改網(wǎng)頁元素內(nèi)容的方法
這篇文章主要介紹了JavaScript動態(tài)修改網(wǎng)頁元素內(nèi)容的方法,實例分析了javascript操作html元素的技巧,具有一定參考借鑒價值,需要的朋友可以參考下2015-03-03
JavaScript程序設(shè)計之JS調(diào)試
這篇文章主要介紹了JavaScript程序設(shè)計中的重要環(huán)節(jié):JS調(diào)試,本文通過一個加法器,介紹JS如何調(diào)試,感興趣的小伙伴們可以參考一下2015-12-12
JS使用面向?qū)ο蠹夹g(shù)實現(xiàn)的tab選項卡效果示例
這篇文章主要介紹了JS使用面向?qū)ο蠹夹g(shù)實現(xiàn)的tab選項卡效果,結(jié)合具體實例形式分析了js面向?qū)ο蠹夹g(shù)與tab選項卡功能的具體實現(xiàn)技巧,需要的朋友可以參考下2017-02-02

