本篇內(nèi)容主要講解“Javascript如何實(shí)現(xiàn)橋接模式”,感興趣的朋友不妨來(lái)看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來(lái)帶大家學(xué)習(xí)“Javascript如何實(shí)現(xiàn)橋接模式”吧!
為景泰等地區(qū)用戶提供了全套網(wǎng)頁(yè)設(shè)計(jì)制作服務(wù),及景泰網(wǎng)站建設(shè)行業(yè)解決方案。主營(yíng)業(yè)務(wù)為成都網(wǎng)站設(shè)計(jì)、做網(wǎng)站、景泰網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠(chéng)的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會(huì)得到認(rèn)可,從而選擇與我們長(zhǎng)期合作。這樣,我們也可以走得更遠(yuǎn)!
基本理論
橋接模式定義:將抽象部分與它的實(shí)現(xiàn)部分分離,使它們都可以獨(dú)立地變化。
橋接模式主要有4個(gè)角色組成:
(1)抽象類
(2)擴(kuò)充抽象類
(3)實(shí)現(xiàn)類接口
(4)具體實(shí)現(xiàn)類
根據(jù)javascript語(yǔ)言的特點(diǎn),我們將其簡(jiǎn)化成2個(gè)角色:
(1)擴(kuò)充抽象類
(2)具體實(shí)現(xiàn)類
怎么去理解橋接模式呢?我們接下來(lái)舉例說(shuō)明
橋接模式的實(shí)現(xiàn)
理解橋接模式的思想,關(guān)鍵是要理解其分離抽象部分和實(shí)現(xiàn)部分的思想。我們舉例進(jìn)行說(shuō)明
最簡(jiǎn)單的橋接模式
其實(shí)我們最經(jīng)常用的jQuery的each函數(shù)就是一個(gè)典型的橋接模式,我們模擬其實(shí)現(xiàn)如下:
var each = function (arr, fn) { for (var i = 0; i < arr.length; i++) { var val = arr[i]; if (fn.call(val, i, val, arr)) { return false; } } } var arr = [1, 2, 3, 4]; each(arr, function (i, v) { arr[i] = v * 2; })
在這個(gè)例子中,我們通過(guò)each函數(shù)循環(huán)了arr數(shù)組,別看這個(gè)例子很常見(jiàn),但其中就包含了典型的橋接模式。
在這個(gè)例子中,抽象部分是each函數(shù),也就是上面說(shuō)的擴(kuò)充抽象類,實(shí)現(xiàn)部分是fn,即具體實(shí)現(xiàn)類。抽象部分和實(shí)現(xiàn)部分可以獨(dú)立的進(jìn)行變化。這個(gè)例子雖然簡(jiǎn)單,但就是一個(gè)典型的橋接模式的應(yīng)用。
插件開(kāi)發(fā)中的橋接模式
橋接模式的一個(gè)適用場(chǎng)景是組件開(kāi)發(fā)。我們平時(shí)開(kāi)發(fā)組件為了適應(yīng)不同場(chǎng)合,組件相應(yīng)的會(huì)有許多不同維度的變化。橋接模式就可以應(yīng)用于此,將其抽象與實(shí)現(xiàn)分離,使組件的擴(kuò)展性更高。
假設(shè)我們要開(kāi)發(fā)一個(gè)彈窗插件,彈窗有不同的類型:普通消息提醒,錯(cuò)誤提醒,每一種提醒的展示方式還都不一樣。這是一個(gè)典型的多維度變化的場(chǎng)景。首先我們定義兩個(gè)類:普通消息彈窗和錯(cuò)誤消息彈窗。
function MessageDialog(animation) { this.animation = animation; } MessageDialog.prototype.show = function () { this.animation.show(); } function ErrorDialog(animation) { this.animation = animation; } ErrorDialog.prototype.show = function () { this.animation.show(); }
這兩個(gè)類就是前面提到的抽象部分,也就是擴(kuò)充抽象類,它們都包含一個(gè)成員animation。
兩種彈窗通過(guò)show方法進(jìn)行顯示,但是顯示的動(dòng)畫(huà)效果不同。我們定義兩種顯示的效果類如下:
function LinerAnimation() { } LinerAnimation.prototype.show = function () { console.log("it is liner"); } function EaseAnimation() { } EaseAnimation.prototype.show = function () { 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();
到此,相信大家對(duì)“Javascript如何實(shí)現(xiàn)橋接模式”有了更深的了解,不妨來(lái)實(shí)際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!
網(wǎng)站欄目:Javascript如何實(shí)現(xiàn)橋接模式
文章路徑:http://sd-ha.com/article38/pepppp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供虛擬主機(jī)、ChatGPT、網(wǎng)站排名、做網(wǎng)站、品牌網(wǎng)站制作、網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)