JavaScript 桥接模式

发布于 2024-08-04 04:31:19 字数 2385 浏览 9 评论 0

桥接模式是一种 既能把两个对象连接在一起,又能避免二者间的强耦合的方法 。通过“桥”把彼此联系起来,同时又允许他们各自独立变化。

主要作用表现为将抽象与实现隔离,以便二者独立化

桥接实例:

  • 事件监听回调机制
  • 特权函数
  • 桥接组织多个单元

代码实现效果:用一个函数去调用另一个函数

事件监听回调机制分离

应用场景:用户点击一个按钮,向服务器端发送信息

$(function(){
  // 1 前台业务逻辑
  var inp = document.getElementById('inp');
  // 用事件注册的方式 在元素上添加事件
  BH.EventUtil.addHandler(inp,'click',sendReq);
  //--------------------------------------------------
  // 2 后台业务逻辑
  function sendReq(){// 处理后台的函数
    //ajax 
    //1 后台服务器的地址
    //2 是一个对象或者一个字符串(参数)
    //$.post('URL',{msg:this.value},function(result){
    // CallBack....
    //});
    alert('发送了指定的数据到后台:' + this.value);
  }
});	

利用桥模式分开俩个业务逻辑单元

$(function(){
  // 1 前台业务逻辑 : 这一段代码处理前台的事件注册和绑定的
  var inp = document.getElementById('inp');
  // 用事件注册的方式 在元素上添加事件
  BH.EventUtil.addHandler(inp,'click',bridgeHadler);

  // 利用桥模式分开					
  function bridgeHadler(){
    var msg = this.value;
    sendReq(msg);
  }

  // 2 后台业务逻辑  :这一段代码处理后台发送请求的
  function sendReq(msg){// 处理后台的函数
    //ajax 
    //1 后台服务器的地址
    //2 是一个对象或者一个字符串(参数)
    //$.post('URL',{msg:this.value},function(result){
    // CallBack....
    //});
    alert('发送了指定的数据到后台:' + msg);
  }

  //单元测试的时候
  sendReq('我也是数据..');
});	

特权函数

// 桥模式:特权函数
var PublicClass = function(){
  //private variable
  var name = '张三';
  // getter 访问私用成员变量 // 特权函数
  this.getName = function(){
    return name ; 
  };
};

var p1 = new PublicClass();
alert(p1.getName());



var PublicClass2 = function(){
  // 私用化的变量
  var privateMethod = function(){
    alert('执行了一个很复杂的操作...');
  };
  // 单元测试这个很复杂的函数
  //privateMethod();

  // 通过特权函数去访问这个私用的独立单元
  this.bridgeMethod = function(){
    return privateMethod();
  }
};

var p1 = new PublicClass2();
p1.bridgeMethod();

实现独立化单元

桥接组织多个单元

// 桥模式:用桥把多个单体组织在一起	
// 使每个单元都能独立化,可以实现自己的变化

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 BridgeCalss = function(a,b,c,d,e){
  this.class1 = new Class1(a,b,c);
  this.class2 = new Class2(d,e);
};

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

枕花眠

暂无简介

0 文章
0 评论
22 人气
更多

推荐作者

謌踐踏愛綪

文章 0 评论 0

开始看清了

文章 0 评论 0

高速公鹿

文章 0 评论 0

alipaysp_PLnULTzf66

文章 0 评论 0

热情消退

文章 0 评论 0

白色月光

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文