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

您的位置:首頁技術文章
文章詳情頁

JavaScript設計模式之門面模式原理與實現方法分析

瀏覽:102日期:2023-11-08 13:33:22

本文實例講述了JavaScript設計模式之門面模式原理與實現方法。分享給大家供大家參考,具體如下:

外部與一個子系統的通信必須通過一個系統的一個門面對象進行,這就是門面模式。

門面模式具備如下兩個角色:

1. 門面角色

客戶端可以調用這個角色方法,此角色中有子系統的應用(知曉相關的(一個或多個)子系統的功能和責任)。本角色會將所有從客戶端發來的請求委派到相應的子系統去。

2. 子系統角色

可以同時有一個或多個子系統。每一個子系統都不是一個單獨的類,而是一些類的集合。每一個子系統都可以被客戶端直接調用(這樣客戶端代碼會多),或被門面角色調用。子系統并不知道門面的存在,對于子系統而言,門面僅僅是另一個客戶端而已。

下面我們來看一個可以提現門面模式的簡單需求:主人為自己的寵物狗辦理的相應的寵物領養證件

從這個簡單的需求中我們可以大致分析出我們需要:主人Person類和寵物狗Dog類 的一些相關信息

在下面的例子中國會涉及到接口的驗證,現在先將代碼貼出來

//(定義一個靜態方法來實現接口與實現類的直接檢驗//靜態方法不要寫出Interface.prototype ,因為這是寫到接口的原型鏈上的//我們要把靜態的函數直接寫到類層次上//定義一個接口類var Interface=function (name,methods) {//name:接口名字 if(arguments.length<2){ alert('必須是兩個參數') } this.name=name; this.methods=[];//定義一個空數組裝載函數名 for(var i=0;i<methods.length;i++){ if(typeof methods[i]!='string'){ alert('函數名必須是字符串類型'); }else { this.methods.push( methods[i]); } }};Interface.ensureImplement=function (object) { if(arguments.length<2){ throw new Error('參數必須不少于2個') return false; } for(var i=1;i<arguments.length;i++){ var inter=arguments[i]; //如果是接口就必須是Interface類型 if(inter.constructor!=Interface){ throw new Error('如果是接口類的話,就必須是Interface類型'); } //判斷接口中的方法是否全部實現 //遍歷函數集合 for(var j=0;j<inter.methods.length;j++){ var method=inter.methods[j];//接口中所有函數 //object[method]傳入的函數 //最終是判斷傳入的函數是否與接口中所用函數匹配 if(!object[method]||typeof object[method]!='function' ){//實現類中必須有方法名字與接口中所用方法名相同throw new Error('實現類中沒有完全實現接口中的所有方法') } } }}

(1)主人類(Person類)

function Person() { this.name='測試'; this.address='居住在中國'; this.getInfo=function () { return '名字'+this.name+' 地址'+this.address; }; this.learn=function () { alert('學習的方法'); } this.marray=function () { alert('marray'); } //驗證接口 Interface.ensureImplement(this,PersonDao);//驗證該類是否全部實現接口中的方法 }

(2)寵物狗(Dog類)

var DogDao=new Interface('DogDao',['getInfo','call','run']); var Dog=function () { this.name='gg'; this.getInfo=function () { return '狗狗的名字'+this.name; }; this.call=function () { }; this.run=function () {}; Interface.ensureImplement(this,DogDao);//驗證接口 }

(3)現在可以主人可以給自己的寵物狗辦理寵物領養證件了 -----客戶端代碼

第一種方法:不用門面的方式客戶端的代碼如下

function action(person,dog) { var r='GG'+new Date().getDay()+Math.floor(Math.random()*11); var str='辦證成功:編號'+r +'<br/>主人信息'+person.getInfo() +'<br>狗狗的信息:'+dog.getInfo(); return str;}document.write(action(new Person(),new Dog()));

第二種方法:使用門面模式-----將復雜的事交給門面來做,客戶端壓力可以減小

#1:門面中進行如下的處理

function facade(person,dog) { var r='GG'+new Date().getDay()+Math.floor(Math.random()*11); var str='辦證成功:編號'+r +'<br/>主人信息'+person.getInfo() +'<br>狗狗的信息:'+dog.getInfo(); this.action=function () {//相當于實例的方法 return str; }; }

#2,客戶端負責使用的代碼為

function action2(person,dog) { document.write(new facade(person,dog).action());}action2(new Person(),new Dog());

總結,我們可以看出不適用門面模式的客戶端需要處理較為復雜的業務,使用門面后,在門面中處理復雜的東西,而客戶端只需要簡單的調用即可。

一個簡單理解門面模式的圖結構:

JavaScript設計模式之門面模式原理與實現方法分析

感興趣的朋友可以使用在線HTML/CSS/JavaScript前端代碼調試運行工具:http://tools.jb51.net/code/WebCodeRun測試上述代碼運行效果。

更多關于JavaScript相關內容還可查看本站專題:《javascript面向對象入門教程》、《JavaScript錯誤與調試技巧總結》、《JavaScript數據結構與算法技巧總結》、《JavaScript遍歷算法與技巧總結》及《JavaScript數學運算用法總結》

希望本文所述對大家JavaScript程序設計有所幫助。

標簽: JavaScript
相關文章:
主站蜘蛛池模板: 国产精品丝袜 | 亚久久| 在线观看黄色网 | 成人性生交大片免费看软件 | 2022麻豆福利午夜久久 | 亚洲精品午夜久久久伊人 | 国产精品19禁在线观看2021 | 亚洲欧美综合在线观看 | 经典香港一级a毛片免费看 春水堂在线 | 日本黄色一级 | 国产精品卡哇伊小可爱在线观看 | 国产黄页在线观看 | 国产主播一区二区 | 91成人午夜在线精品 | 亚洲精品国产福利在线观看 | 亚洲an日韩专区在线 | 手机黄色小视频 | 黄色视屏免费观看 | 日本一道免费一区二区三区 | a视频免费 | 久久青青成人亚洲精品 | 久草色视频 | 特黄色一级毛片 | 嘿嘿嘿视频免费网站在线观看 | 国产高清国产专区国产精品 | 在线精品小视频 | 911国产在线观看精品 | 亚洲欧美一区二区三区不卡 | 精品樱空桃一区二区三区 | 久久精品99 | 黄色理论视频 | 国内精品视频区在线2021 | 亚欧精品一区二区三区四区 | 国产日韩欧美综合在线 | 日本0930免费视频 | 麻豆精品视频 在线视频 | 91aaa免费观看在线观看资源 | 日本美女视频韩国视频网站免费 | 亚洲精品久久久久久下一站 | 一区二区三区www | 亚洲永久精品免费www52zcm男男 |