javascript設計模式 橋接模式
什麼是橋接模式
講事件的實現部分和抽象部分分離開來,以便兩者可以獨立的變化
橋接模式的作用
簡單的橋接模式
abstractFn是抽象部分, 而actualFn是實現部分。 他們完全可以獨自變化互不影響。
/**
* 定義一個實際的接口,處理判斷一個數的奇偶
* @param temp
* @returns {*}
*/
var actualFn = function (temp) {
if (temp % 2 != 0)
return "the num is odd";
else
return "The num is even";
}
/**
* 定義一個抽象的接口,通過傳入相關的處理函數,來判斷一個數的奇偶
* @param num
* @param fn
*/
var abstractFn = function (num, fn) {
var result = fn.call(window, num);
console.log(result);
}
// 接口的數據調用
abstractFn(6, actualFn);
橋接模式的方法訪問類中的私有成員
/**
* 定義一個類
* @constructor
*/
var Public = function () {
var secret = 3;
/**
* 通過橋接模式訪問類中的私有變量
* @returns {number}
*/
this.privilegedGetter = function () {
return secret;
}
}
用橋接模式連接多個類
/**
* 定義類1
* @param a
* @param b
* @constructor
*/
var Class1 = function (a, b) {
this.a = a;
this.b = b;
};
/**
* 定義類2
* @param c
* @constructor
*/
var Class2 = function (c) {
this.c = c;
}
/**
* 定義一個相關的橋接類
* @param a
* @param b
* @param c
* @constructor
*/
var BridgeClass = function (a, b, c) {
this.class1 = new Class1(a, b);
this.class2 = new Class2(c);
}
其中的橋接類將相關的數據分發給相關的處理類,而處理類與橋接類可以進行相互獨立的改變.
橋接模式的使用場合
js編程常常基於事件驅動開發,因此接口“可橋接”,實際上也就是可適配。
橋接模式的好處
1.將功能的抽象和其實現隔離開,有助於獨立地管理軟件的各組成部分
2.分離了抽象與實現,有助於bug的尋找和數據的追蹤
橋接模式的弊端
使用橋接元素,每次都要增加一次函數調用,對應用程序的性能會產生一定的影響