本篇文章給大家分享的是有關(guān)如何在JavaScript中使用適配器模式,小編覺得挺實(shí)用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。
站在用戶的角度思考問題,與客戶深入溝通,找到孟連網(wǎng)站設(shè)計(jì)與孟連網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個(gè)性化、用戶體驗(yàn)好的作品,建站類型包括:成都做網(wǎng)站、成都網(wǎng)站設(shè)計(jì)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、域名注冊(cè)、網(wǎng)絡(luò)空間、企業(yè)郵箱。業(yè)務(wù)覆蓋孟連地區(qū)。
基本理論
適配器模式:將一個(gè)接口轉(zhuǎn)換成客戶端需要的接口而不需要去修改客戶端代碼,使得不兼容的代碼可以一起工作。
適配器主要有3個(gè)角色組成:
(1)客戶端:調(diào)用接口的類
(2)適配器:用來連接客戶端接口和提供服務(wù)的接口的類
(3)適配者:提供服務(wù),但是卻與客戶端接口需求不兼容服務(wù)類。
此處 有一個(gè)實(shí)例是關(guān)于兩個(gè)數(shù)的加法的。
一,先有一個(gè)能夠?qū)崿F(xiàn),兩個(gè)數(shù)加法的服務(wù)和客戶端。
(1)先引入接口檢驗(yàn)類----檢查實(shí)現(xiàn)該接口的類是否實(shí)現(xiàn)了接口中所用方法。
//(定義一個(gè)靜態(tài)方法來實(shí)現(xiàn)接口與實(shí)現(xiàn)類的直接檢驗(yàn) //靜態(tài)方法不要寫出Interface.prototype ,因?yàn)檫@是寫到接口的原型鏈上的 //我們要把靜態(tài)的函數(shù)直接寫到類層次上 //定義一個(gè)接口類 var Interface=function (name,methods) {//name:接口名字 if(arguments.length<2){ alert("必須是兩個(gè)參數(shù)") } this.name=name; this.methods=[];//定義一個(gè)空數(shù)組裝載函數(shù)名 for(var i=0;i(2)使用接口類同一接口
var InterfaceResult=new Interface("InterfaceResult",["add"]);(3)服務(wù)端兩個(gè)數(shù)的加法
function First() { this.add=function (x,y) { return x+y; } Interface.ensureImplement(this,InterfaceResult);//接口檢驗(yàn) }(4)客戶端調(diào)用服務(wù)端代碼
var first=new First(); alert(first.add(1,2)) ;//3二,現(xiàn)在有一個(gè)要求就是,需要換一個(gè)類庫,但是客戶端的程序不希望有大的改動(dòng)。
(1)依然繼承相同接口的基礎(chǔ)上,類庫為
function Second() { this.add=function (numberList) { //[1,2,3] "1+2+3" eval("1+2+3") return eval(numberList.join("+")); } Interface.ensureImplement(this,InterfaceResult);//檢驗(yàn)當(dāng)前類是否完全實(shí)現(xiàn)接口中的方法 }此時(shí)我們?nèi)绻枰褂迷擃悗斓脑?,客戶端又不能該,那么用和之前的調(diào)用方式:
var second=new Second(); alert(second.add(1,3));//已經(jīng)不能這樣使用了是完全不符合客戶端的要求的。為了在保證客戶端不變的情況下,又能使用新的類庫,我們需要使用適配器模式。現(xiàn)在接口發(fā)生了變化,使用適配器兼容,以便適應(yīng)客戶端的不變
使客戶端與新的接口相會(huì)兼容。
(2)適配器
function ThirdWarpper() { this.add=function (x,y) { var arr=new Array(); arr.push(x); arr.push(y); return new Second().add(arr); } Interface.ensureImplement(this,InterfaceResult); }(3)客戶端代碼
//客戶端 var third=new ThirdWarpper(); var result= third.add(1,8);//傳遞數(shù) alert(result);針對(duì)上述的使用新的類庫后的圖解為:
以上就是如何在JavaScript中使用適配器模式,小編相信有部分知識(shí)點(diǎn)可能是我們?nèi)粘9ぷ鲿?huì)見到或用到的。希望你能通過這篇文章學(xué)到更多知識(shí)。更多詳情敬請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。
網(wǎng)站標(biāo)題:如何在JavaScript中使用適配器模式
本文來源:http://weahome.cn/article/jjjojd.html