在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 教程/ HTML/ 設計模式之外觀模式
代碼復用模式(避免篇)
S.O.L.I.D 五大原則之接口隔離原則 ISP
設計模式之狀態(tài)模式
JavaScript 核心(晉級高手必讀篇)
設計模式之建造者模式
JavaScript 與 DOM(上)——也適用于新手
設計模式之中介者模式
設計模式之裝飾者模式
設計模式之模板方法
設計模式之外觀模式
強大的原型和原型鏈
設計模式之構造函數(shù)模式
揭秘命名函數(shù)表達式
深入理解J avaScript 系列(結局篇)
執(zhí)行上下文(Execution Contexts)
函數(shù)(Functions)
《你真懂 JavaScript 嗎?》答案詳解
設計模式之適配器模式
設計模式之組合模式
設計模式之命令模式
S.O.L.I.D 五大原則之單一職責 SRP
編寫高質量 JavaScript 代碼的基本要點
求值策略
閉包(Closures)
對象創(chuàng)建模式(上篇)
This? Yes,this!
設計模式之代理模式
變量對象(Variable Object)
S.O.L.I.D 五大原則之里氏替換原則 LSP
面向對象編程之一般理論
設計模式之單例模式
Function 模式(上篇)
S.O.L.I.D 五大原則之依賴倒置原則 DIP
設計模式之迭代器模式
立即調用的函數(shù)表達式
設計模式之享元模式
設計模式之原型模式
根本沒有“JSON 對象”這回事!
JavaScript 與 DOM(下)
面向對象編程之 ECMAScript 實現(xiàn)
全面解析 Module 模式
對象創(chuàng)建模式(下篇)
設計模式之職責鏈模式
S.O.L.I.D 五大原則之開閉原則 OCP
設計模式之橋接模式
設計模式之策略模式
設計模式之觀察者模式
代碼復用模式(推薦篇)
作用域鏈(Scope Chain)
Function 模式(下篇)
設計模式之工廠模式

設計模式之外觀模式

介紹

外觀模式(Facade)為子系統(tǒng)中的一組接口提供了一個一致的界面,此模塊定義了一個高層接口,這個接口值得這一子系統(tǒng)更加容易使用。

正文

外觀模式不僅簡化類中的接口,而且對接口與調用者也進行了解耦。外觀模式經(jīng)常被認為開發(fā)者必備,它可以將一些復雜操作封裝起來,并創(chuàng)建一個簡單的接口用于調用。

外觀模式經(jīng)常被用于 JavaScript 類庫里,通過它封裝一些接口用于兼容多瀏覽器,外觀模式可以讓我們間接調用子系統(tǒng),從而避免因直接訪問子系統(tǒng)而產生不必要的錯誤。

外觀模式的優(yōu)勢是易于使用,而且本身也比較輕量級。但也有缺點 外觀模式被開發(fā)者連續(xù)使用時會產生一定的性能問題,因為在每次調用時都要檢測功能的可用性。

下面是一段未優(yōu)化過的代碼,我們使用了外觀模式通過檢測瀏覽器特性的方式來創(chuàng)建一個跨瀏覽器的使用方法。

var addMyEvent = function (el, ev, fn) {
    if (el.addEventListener) {
        el.addEventListener(ev, fn, false);
    } else if (el.attachEvent) {
        el.attachEvent('on' + ev, fn);
    } else {
        el['on' + ev] = fn;
    }
}; 

再來一個簡單的例子,說白了就是用一個接口封裝其它的接口:

var mobileEvent = {
    // ...
    stop: function (e) {
        e.preventDefault();
        e.stopPropagation();
    }
    // ...
};

總結

那么何時使用外觀模式呢?一般來說分三個階段:

首先,在設計初期,應該要有意識地將不同的兩個層分離,比如經(jīng)典的三層結構,在數(shù)據(jù)訪問層和業(yè)務邏輯層、業(yè)務邏輯層和表示層之間建立外觀 Facade。

其次,在開發(fā)階段,子系統(tǒng)往往因為不斷的重構演化而變得越來越復雜,增加外觀 Facade 可以提供一個簡單的接口,減少他們之間的依賴。

第三,在維護一個遺留的大型系統(tǒng)時,可能這個系統(tǒng)已經(jīng)很難維護了,這時候使用外觀 Facade 也是非常合適的,為系系統(tǒng)開發(fā)一個外觀 Facade 類,為設計粗糙和高度復雜的遺留代碼提供比較清晰的接口,讓新系統(tǒng)和Facade對象交互,F(xiàn)acade 與遺留代碼交互所有的復雜工作。

參考:大話設計模式