讲事件的实现部分和抽象部分分离开来,以便两者可以独立的变化
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的寻找和数据的追踪
使用桥接元素,每次都要增加一次函数调用,对应用程序的性能会产生一定的影响