這個模式是我覺得最好懂的模式。 外觀(Facade)模式 定義: 外觀模式是一種結構型模式。它為更大的代碼體提供了一個方便的高層次介面,能夠隱藏其底層的真實複雜性。簡單說就是——小介面有大智慧。 例子: 使用jQuery的$(el).css()或$(el).animate()方法時,實際上我們是在使 ...
這個模式是我覺得最好懂的模式。
外觀(Facade)模式
定義:
外觀模式是一種結構型模式。它為更大的代碼體提供了一個方便的高層次介面,能夠隱藏其底層的真實複雜性。簡單說就是——小介面有大智慧。
例子:
使用jQuery的$(el).css()或$(el).animate()方法時,實際上我們是在使用Facade:一種更簡單的公有介面,使我們不必手動在jQuery核心調用很多內部方法以便實現某些行為。
優點:
1. 易於使用。
2. 實現該模式時占用空間小。
3. 調用者與底層代碼解耦。
缺點:
1. 可能存在隱性成本,性能下降。
使用場景:
1. 為一個複雜子系統提供一個簡單介面。
2. 提高子系統的獨立性。
示例:
使用Facade來簡化用於監聽跨瀏覽器事件的介面。
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; } };
結論:
當使用Facade模式時,要瞭解涉及的任何性能成本,並確認是否值得抽象。
中介者模式與外觀模式區別
中介者模式在它被模塊顯式引用的地方彙集這些模塊之間的通信。從某種意義上說,這是多方向的。
外觀模式僅是為模塊或系統定義了一個較簡單的介面,而沒有添加任何額外的功能。系統中的其他模塊不會直接關聯外觀,所以可以被視為單向的。
參考文獻
1. 《Learning JavaScript Design Patterns》 by Addy Osmani
https://addyosmani.com/resources/essentialjsdesignpatterns/book/
2. 《JavaScript設計模式》by 徐濤【譯】
本文為原創文章,轉載請保留原出處,方便溯源,如有錯誤地方,謝謝指正。
本文地址 :http://www.cnblogs.com/lovesong/p/5612488.html