javascript適配器模式和組合模式原理與實(shí)現(xiàn)方法詳解
一、適配器模式
1、作用:主要解決兩個(gè)軟件實(shí)體間接口不兼容的問(wèn)題
2、實(shí)例
(1)地圖渲染的適配
//谷歌和百度地圖的渲染地圖調(diào)用的方式不一樣
var googleMap = {
show: function () {
console.log('開(kāi)始渲染谷歌地圖')
}
}
var BaiduMap = {
display: function () {
console.log('開(kāi)始渲染谷歌地圖')
}
}
//我們 程序中的渲染地圖方法入下
var renderMap = function (map) {
if (map.show instanceof Function) {
map.show()
}
}
//baiduMap 來(lái)源于第三方,不能改變其內(nèi)部構(gòu)造,那么需要對(duì)百度地圖做一下適配
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)系,非常適用組合模式來(lái)描述。文件夾里既可以包含文件,又可以包含其他文件夾。
//掃描文件夾 folder 和 file 兩個(gè)類
var Folder = function (name) {
this.name = name;
this.file = []
}
Folder.prototype.add = function (file) {
this.file.push(file)
}
Folder.prototype.scan = function () {
console.log('開(kāi)始掃描文件夾'+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('開(kāi)始掃描文件'+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è)計(jì)模式相關(guān)知識(shí)點(diǎn),還可以參考本站文章:
http://www.fzitv.net/article/252965.htm
http://www.fzitv.net/article/27973.htm
- JavaScript適配器模式詳解
- javascript設(shè)計(jì)模式之Adapter模式【適配器模式】實(shí)現(xiàn)方法示例
- JavaScript設(shè)計(jì)模式之適配器模式介紹
- 深入理解JavaScript系列(39):設(shè)計(jì)模式之適配器模式詳解
- 詳解JavaScript實(shí)現(xiàn)設(shè)計(jì)模式中的適配器模式的方法
- javascript設(shè)計(jì)模式 – 適配器模式原理與應(yīng)用實(shí)例分析
- JavaScript設(shè)計(jì)模式學(xué)習(xí)之適配器模式
- JavaScript 設(shè)計(jì)模式之組合模式解析
- JavaScript組合模式學(xué)習(xí)要點(diǎn)
- 設(shè)計(jì)模式中的組合模式在JavaScript程序構(gòu)建中的使用
- javascript設(shè)計(jì)模式 – 組合模式原理與應(yīng)用實(shí)例分析
- JavaScript設(shè)計(jì)模式開(kāi)發(fā)中組合模式的使用教程
相關(guān)文章
onkeydown事件解決按回車鍵直接提交數(shù)據(jù)的需求
登陸頁(yè)面需要撲捉用戶按下回車自動(dòng)提交的需求,于是相到在body里添加onkeydown事件跳javascript在提交表單,具體看下實(shí)現(xiàn)代碼,希望對(duì)你有所幫助2013-04-04
實(shí)例講解js驗(yàn)證表單項(xiàng)是否為空的方法
這篇文章主要以實(shí)例方式向大家講解了js驗(yàn)證表單項(xiàng)是否為空的方法,感興趣的朋友可以參考一下2016-01-01
javascript 實(shí)現(xiàn)父窗口引用彈出窗口的值的腳本
javascript 實(shí)現(xiàn)父窗口引用彈出窗口的值的腳本...2007-08-08
移動(dòng)端點(diǎn)擊圖片放大特效PhotoSwipe.js插件實(shí)現(xiàn)
這篇文章主要為大家詳細(xì)介紹了移動(dòng)端點(diǎn)擊圖片放大特效PhotoSwipe.js插件實(shí)現(xiàn)方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-08-08

