博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
结构型设计模式之桥接模式
阅读量:5978 次
发布时间:2019-06-20

本文共 1599 字,大约阅读时间需要 5 分钟。

前言

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

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

案例说明

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

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

// 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();复制代码

更多

桥接模式会造成开发成本的增加,有时性能也会受到影响,请合理的平衡决定是否使用。

在另外的章节,我会着重分析学习面对对象的继承编程和组合编程的差别。

原文链接:

转载于:https://juejin.im/post/5cdbf065e51d453ae035081f

你可能感兴趣的文章
关于泛型类,泛型接口,泛型函数
查看>>
@pathvariable和@RequestParam的区别
查看>>
测试驱动开发
查看>>
C++操作符重载
查看>>
Redis实现分布式锁2
查看>>
【Udacity】线性回归方程 Regression
查看>>
前端架构设计1:代码核心
查看>>
RPC 框架通俗解释 转自知乎(洪春涛)
查看>>
获取cookie后,使用cookie进行接下来的自动化操作
查看>>
算法笔记--数论模板小集(待增)
查看>>
SASS初学者入门(转)
查看>>
C语言100个算法经典例题(七)
查看>>
轻松实现远程批量拷贝文件脚本(女学生作品)
查看>>
Nmap在pentest box中的扫描及应用
查看>>
测试组合索引
查看>>
四、物理优化(2)索引视图
查看>>
【沟通之道】头脑风暴-女人的心思你别猜
查看>>
钱趣多风控新举措:源头选择与物理隔离
查看>>
puppet最新源码包安装学习笔记
查看>>
烂泥:kickstart无人值守安装CentOS6.5
查看>>