结构型设计模式之桥接模式

栏目: 后端 · 发布时间: 6年前

内容简介:说起桥接模式可能大家都多少觉得名字陌生,但是如果说解耦以及封装功能函数大家一定都不陌生,其实在我们写业务代码时已经在无形中多少使用这种设计模式了,只是没有注意到或者养成习惯要这样设计。桥接模式的主要特点就是将实现层与抽象层解耦分离,使得两部分独立变化。由此可以看出桥接模式主要是对结构之间的解耦,而抽象工厂模式和创建模式主要任务在于创建。比如我们需要在一个业务中原来的代码是这样的,代码非常简单,只是说明其思想是什么。

说起桥接模式可能大家都多少觉得名字陌生,但是如果说解耦以及封装功能函数大家一定都不陌生,其实在我们写业务代码时已经在无形中多少使用这种 设计模式 了,只是没有注意到或者养成习惯要这样设计。

桥接模式的主要特点就是将实现层与抽象层解耦分离,使得两部分独立变化。由此可以看出桥接模式主要是对结构之间的解耦,而抽象工厂模式和创建模式主要任务在于创建。

案例说明

案例一 解耦抽象出 工具 类(抽象类)

比如我们需要在一个业务中原来的代码是这样的,代码非常简单,只是说明其思想是什么。

// old codes 
let addNum = 5 ;
let total = initNum + addNum ;
let amount = 100 + addNum;
console.log(`增加了${addNum}件衣服`);

// extra codes 
let addNum = 9 ;
let total = initNum + addNum ;
let amount = 100 + addNum;
console.log(`增加了${addNum}件鞋子`);

//better codes 提取代码中的共同点,为公共函数,与具体的业务解耦,然后在原来的不同页面中分别调用
function addObjs(addnum,name){
  let total = initNum + addNum ;
	let amount = 100 + addNum;
	console.log(`增加了${addNum}`件${name});
}

let addNum = 5;
addObjs(addNum,'衣服');

let addNum = 9;
addObjs(addNum,'鞋子');

复制代码

案例二 :多维化对象 && 组合

除了上面这种使用,其实多维的变化也是非常常见的使用场景。与上面解耦抽象与具体业务不同,这时的桥接是可以看做是用于组合不同的基本抽象类或者方法,然后组装成另一个对象或者类。

假设我们具有人这个类,但是后面发现人的类代码写多了会有两种场景困扰我们需要重构。

  • 人下具有太多核心代码,维护比较困难
  • 人下具有许多功能也是其他基本类具有的,或者说就是某些函数也是其他功能可以具有的

这时候,我们就会用桥接模式将不同的函数或者类桥接之后作为一个新的整体使用.

codepen代码地址:链接

class Animal{
	constructor(name){
    this.name = name || 'animal';
  }
  run(){
  	console.log(`${this.name} can run`)
  }
}
function talk(){
  console.log('talk in xx language')
}
function work(name){
  console.log(`${name} can work`)
}
class Person{
	constructor(name){
   this.name = name ;
   this.animal = new Animal(this.name);
   this.talk = talk ;
   this.work = work.bind(this,this.name) ;
  }
}
let zhangsan = new Person('张三');
zhangsan.work();
zhangsan.talk();
zhangsan.animal.run();

复制代码

以上所述就是小编给大家介绍的《结构型设计模式之桥接模式》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

精益数据分析

精益数据分析

[加] 阿利斯泰尔·克罗尔、[加] 本杰明·尤科维奇 / 韩知白、王鹤达 / 人民邮电出版社 / 2014-12 / 79.00元

本书展示了如何验证自己的设想、找到真正的客户、打造能赚钱的产品,以及提升企业知名度。30多个案例分析,全球100多位知名企业家的真知灼见,为你呈现来之不易、经过实践检验的创业心得和宝贵经验,值得每位创业家和企业家一读。 深入理解精益创业、数据分析基础,和数据驱动的思维模式 如何将六个典型的商业模式应用到各种规模的新企业 找到你的第一关键指标 确定底线,找到出发点 在大......一起来看看 《精益数据分析》 这本书的介绍吧!

在线进制转换器
在线进制转换器

各进制数互转换器

MD5 加密
MD5 加密

MD5 加密工具

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换