日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
Javascript設(shè)計(jì)模式理論與實(shí)戰(zhàn):橋接模式

橋接模式將抽象部分與實(shí)現(xiàn)部分分離開來,使兩者都可以獨(dú)立的變化,并且可以一起和諧地工作。抽象部分和實(shí)現(xiàn)部分都可以獨(dú)立的變化而不會(huì)互相影響,降低了代碼的耦合性,提高了代碼的擴(kuò)展性。

10余年的犍為網(wǎng)站建設(shè)經(jīng)驗(yàn),針對(duì)設(shè)計(jì)、前端、開發(fā)、售后、文案、推廣等六對(duì)一服務(wù),響應(yīng)快,48小時(shí)及時(shí)工作處理。營(yíng)銷型網(wǎng)站的優(yōu)勢(shì)是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動(dòng)調(diào)整犍為建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計(jì),從而大程度地提升瀏覽體驗(yàn)。創(chuàng)新互聯(lián)從事“犍為網(wǎng)站設(shè)計(jì)”,“犍為網(wǎng)站推廣”以來,每個(gè)客戶項(xiàng)目都認(rèn)真落實(shí)執(zhí)行。

基本理論

橋接模式定義:將抽象部分與它的實(shí)現(xiàn)部分分離,使它們都可以獨(dú)立地變化。
橋接模式主要有4個(gè)角色組成:
(1)抽象類
(2)擴(kuò)充抽象類
(3)實(shí)現(xiàn)類接口
(4)具體實(shí)現(xiàn)類
根據(jù)javascript語言的特點(diǎn),我們將其簡(jiǎn)化成2個(gè)角色:
(1)擴(kuò)充抽象類
(2)具體實(shí)現(xiàn)類
怎么去理解橋接模式呢?我們接下來舉例說明

橋接模式的實(shí)現(xiàn)

理解橋接模式的思想,關(guān)鍵是要理解其分離抽象部分和實(shí)現(xiàn)部分的思想。我們舉例進(jìn)行說明

最簡(jiǎn)單的橋接模式

其實(shí)我們最經(jīng)常用的jQuery的each函數(shù)就是一個(gè)典型的橋接模式,我們模擬其實(shí)現(xiàn)如下:

 
 
  1. var each = function (arr, fn) { 
  2.     for (var i = 0; i < arr.length; i++) { 
  3.         var val = arr[i]; 
  4.         if (fn.call(val, i, val, arr)) { 
  5.             return false; 
  6.         } 
  7.     } 
  8. var arr = [1, 2, 3, 4]; 
  9. each(arr, function (i, v) { 
  10.     arr[i] = v * 2; 
  11. }) 

在這個(gè)例子中,我們通過each函數(shù)循環(huán)了arr數(shù)組,別看這個(gè)例子很常見,但其中就包含了典型的橋接模式。

在這個(gè)例子中,抽象部分是each函數(shù),也就是上面說的擴(kuò)充抽象類,實(shí)現(xiàn)部分是fn,即具體實(shí)現(xiàn)類。抽象部分和實(shí)現(xiàn)部分可以獨(dú)立的進(jìn)行變化。這個(gè)例子雖然簡(jiǎn)單,但就是一個(gè)典型的橋接模式的應(yīng)用。

插件開發(fā)中的橋接模式

橋接模式的一個(gè)適用場(chǎng)景是組件開發(fā)。我們平時(shí)開發(fā)組件為了適應(yīng)不同場(chǎng)合,組件相應(yīng)的會(huì)有許多不同維度的變化。橋接模式就可以應(yīng)用于此,將其抽象與實(shí)現(xiàn)分離,使組件的擴(kuò)展性更高。
假設(shè)我們要開發(fā)一個(gè)彈窗插件,彈窗有不同的類型:普通消息提醒,錯(cuò)誤提醒,每一種提醒的展示方式還都不一樣。這是一個(gè)典型的多維度變化的場(chǎng)景。首先我們定義兩個(gè)類:普通消息彈窗和錯(cuò)誤消息彈窗。 

 
 
  1. function MessageDialog(animation) { 
  2.     this.animation = animation; 
  3. MessageDialog.prototype.show = function () { 
  4.     this.animation.show(); 
  5. function ErrorDialog(animation) { 
  6.     this.animation = animation; 
  7. ErrorDialog.prototype.show = function () { 
  8.     this.animation.show(); 

這兩個(gè)類就是前面提到的抽象部分,也就是擴(kuò)充抽象類,它們都包含一個(gè)成員animation。

兩種彈窗通過show方法進(jìn)行顯示,但是顯示的動(dòng)畫效果不同。我們定義兩種顯示的效果類如下:

  
 
  1. function LinerAnimation() { 
  2. LinerAnimation.prototype.show = function () { 
  3.     console.log("it is liner"); 
  4. function EaseAnimation() { 
  5. EaseAnimation.prototype.show = function () { 
  6.     console.log("it is ease"); 

 

這兩個(gè)類就是具體實(shí)現(xiàn)類,它們實(shí)現(xiàn)具體的顯示效果。那我們?nèi)绾握{(diào)用呢?

1 var message = new MessageDialog(new LinerAnimation());
2 message.show();
3 var error = new ErrorDialog(new EaseAnimation());
4 error.show();

如果我們要增加一種動(dòng)畫效果,可以再定義一種效果類,傳入即可。

總結(jié)

學(xué)習(xí)橋接模式關(guān)鍵是要理解抽象部分與實(shí)現(xiàn)部分的分離,使得二者可以獨(dú)立的變化,而不必拘泥于形式。JS插件靈活的變化,適用場(chǎng)景的多變就非常適合使用這種模式來實(shí)現(xiàn)。使用橋接模式最重要的是要找出系統(tǒng)中不同的變化維度。

原文地址:http://luopq.com/2015/11/11/design-pattern-bridge/


當(dāng)前文章:Javascript設(shè)計(jì)模式理論與實(shí)戰(zhàn):橋接模式
網(wǎng)站鏈接:http://www.5511xx.com/article/cochjgd.html