7-JavaScript设计模式——桥接模式

桥接模式 有以下三种使用场景:

1、事件监听回调机制的分离

2、特权函数(在作用域外部访问其内部私有成员变量的函数)

3、实现独立化单元

1、事件监听回调机制的分离

<button id="btn">按钮</button>

// 获得按钮对象
var oBtn = document.getElementById('btn');

// 正常情况下我们是这样为元素添加事件的
oBtn.addEventListener('click', function(){
  
  alert(this.innerHTML + ': 我被点击了');
  
  // 如果我们如何对回调函数进行单元测试呢?
});
// 使用 桥接模式 将回调函数分离出来
oBtn.addEventListener('click', bridge);

// 桥接函数
function bridge(){
  var target = this.innerHTML;
  clickEvent(target);
}
// 下面这个函数实现了 解耦
function clickEvent(target){
  alert(target + ': 我被点击了');
}


2、特权函数(在作用域外部访问其内部私有成员变量的函数)

// 特权函数
var PublicClass = function(){
  var name = '张三';
  
  // 访问私有成员变量
  this.getName = function(){
    return name;
  };
};

var p1 = new PublicClass();
alert(p1.getName());// 张三
// 特权函数
var PublicClass = function(){
  // 私有成员方法
  var privateMethod = function(){
    alert('执行了一个很复杂的操作...');
  };
  
  // 通过特权函数去访问这个私有的独立单元
  this.bridgeMethod = function(){
    return privateMethod();
  };
};

var p1 = new PublicClass();
p1.bridgeMethod();// 执行了一个很复杂的操作...



3、实现独立化单元

// 独立化单元
var Class1 = function(a, b, c){
  this.a = a;
  this.b = b;
  this.c = c;
};

var Class2 = function(d, e){
  this.d = d;
  this.e = e;
};

// 用桥把多个单体组织到一起
var bridgeClass = function(a, b, c, d, e){
  this.class1 = new Class1(a, b, c);
  this.class2 = new Class2(d, e);
};

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值