定义

将抽象部分与实现部分分离,使它们都可以独立的变化。

演化

1.请设计一个绘图工具,功能比较简单,它能绘制不同的图形,和不同的颜色。为了让绘制对象具备统一的绘制行为,我们一般会抽象出来Shape和Color两个接口。

public interface Shape {void drawShape();
}
public interface Color {void drawColor();
}

2.想让一个类具备两个接口的功能,可以让具体的绘制对象去实现这两个接口,如绘制一个红色的圆。

public class RedCircle implements Shape, Color {@Overridepublic void drawColor() {System.out.println("Red");}@Overridepublic void drawShape() {System.out.println("Circle");}
}

在Shape和Color的实现类极少的情况下,这种写法已经实现了预期的需求。但显然,一个绘图工具可绘制的东西不可能如此简单。按照这个写法,如果有10种图形,10种颜色。为了满足调用方绘制图形的所有要求,我们需要预先定义100个实现类,这显然是行不通的。虽然一般情况下,工具的封装需要尽量减少调用方的麻烦,但在定义如此复杂的情况下就需要重新权衡利弊了。

3.分析解决2中的问题,可以发现,Shape和Color本质上是两个完全不同的纬度。如果仅仅定义各个纬度的实现类,那只要20个实现类就足够完成了。而当调用方需要这两个纬度的属性时,只需要多出一步组装的过程,这样看来是十分划算的了。重新定义Circle类

public class Circle implements Shape {private Color color;public Circle(Color color) {this.color = color;}@Overridepublic void drawShape() {System.out.println("Circle");color.drawColor();}
}

通过改变给Circle传入的Color实现类,Circle具备了绘制各种颜色图形的能力。这也就完成了桥接模式。
简单来讲,它就是将一个复杂的类,先分离成不同纬度的组成部分,使得各个纬度的变化互不影响,且各个纬度的实现类数量有限。然后各个纬度的成品交给调用方去组装,从而避免了使用继承时实现类爆炸的后果。

优点:

1、抽象和实现的分离
2、优秀的扩展能力,两纬度的变化修改变更较为简单
3、实现细节对客户透明,调用方知道了具体对象的创建过程

缺点

桥接模式的引入会增加系统的理解与设计难度,由于聚合关联关系建立在抽象层,要求开发者针对抽象进行设计与编程。

设计模式演化之桥接模式相关推荐

  1. python的编程模式-实例解析Python设计模式编程之桥接模式的运用

    这篇文章主要介绍了Python设计模式编程之桥接模式的运用,桥接模式主张把抽象部分与它的实现部分分离,需要的朋友可以参考下 我们先来看一个例子: #encoding=utf-8 # #by panda ...

  2. 简易理解设计模式之:桥接模式——穿衣服经典案例2

    介绍: 桥接模式属于结构型模式.它的定义为:将抽象部分与实现部分分离,使它们都可以独立的变化. 类图: Abstraction(抽象化角色):抽象部分,保持对实现部分对象的引用,抽象部分中的方法需要调 ...

  3. 设计模式笔记之七 (桥接模式)

    桥接模式 桥接模式就是把影响事物对象的多个因素抽象出来从而使两者解偶,那么就能动态的加载变化的因素. 好吧,这个定义很抽象,我们还是来聊下具体的事物. 最近我们实验室因为一系列的设计模式改进,所以竞争 ...

  4. 《Java设计模式》之桥接模式

    Bridge模式的概念 Bridge 模式是构造型的设计模式之中的一个.Bridge模式基于类的最小设计原则,通过使用封装,聚合以及继承等行为来让不同的类承担不同的责任.它的主要特点是把抽象(abst ...

  5. JAVA设计模式初探之桥接模式

    生活中的一个例子:    拿汽车在路上行驶的来说.既有小汽车又有公共汽车,它们都不但能在市区中的公路上行驶,也能在高速公路上行驶.这你会发现,对于交通工具(汽车)有不同的类型,它们所行驶的环境(路)也 ...

  6. Net设计模式实例之桥接模式( Bridge Pattern)(4)

    3.客户端代码<?XML:NAMESPACE PREFIX = O /> static void <?XML:NAMESPACE PREFIX = ST2 />Main(str ...

  7. 从王者荣耀看设计模式(十七.桥接模式)

    从王者荣耀看设计模式(桥接模式) 一.简介 王者荣耀是一款RGB游戏,玩家操控自己选择的英雄进行竞赛.在游戏正式开始前,玩家在挑选想要操作的英雄的同时,也会挑选适合该英雄的召唤师技能.召唤师技能是通用 ...

  8. java设计模式 桥接_Java设计模式百例 - 桥接模式

    桥接(Bridge)是用于把抽象化与实现化解耦,使得二者可以独立变化.这种类型的设计模式属于结构型模式,它通过提供抽象化和实现化之间的桥接结构,来实现二者的解耦.这种模式涉及到一个作为桥接的接口,使得 ...

  9. 【设计模式自习室】桥接模式 Bridge Pattern:处理多维度变化

    前言 <设计模式自习室>系列,顾名思义,本系列文章带你温习常见的设计模式.主要内容有: 该模式的介绍,包括: 引子.意图(大白话解释) 类图.时序图(理论规范) 该模式的代码示例:熟悉该模 ...

最新文章

  1. 李沐:五年工作反思!
  2. 如何优雅地在 Java 8 中处理异常
  3. 超级列表框排序mysql_超级列表框List Ctrl
  4. 如何定期按时完成数据中心的测试?
  5. Linux中设置vim自动在运算符号两边加上空格
  6. 直接让web服务运行在80端不行吗,为什么要用nginx反向代理?
  7. 阿里华为百度三足鼎立,5G 资费高,操作系统 Linux 称王 | 中国物联网开发者真实现状报告...
  8. Chrome浏览器安装Axure插件教程
  9. w10计算机,打开win10自带计算器的多种方法
  10. maxima 代数方程求解
  11. 办公局域网内的打印机如何做共享?
  12. 【day22】java导出word文档(包含导出图片)
  13. 【flutter】type ‘Null‘ is not a subtype of type ‘bool‘
  14. 一文解决斐波那契数列求前n项和;和求第n个数是多少的问题;斐波那契数列(Fibonacci)又称黄金分割数列,指的是这样一个数列:0、1、1、2、3、5、8、13、21、34、……
  15. 当今十大备份应用软件
  16. 联想M490原装Win8系统改Win7系统的血泪史
  17. 计算机器点游戏,24游戏计算器
  18. 免费版网管软件,轻松解决六大网络问题
  19. 计算机学业水平考试 高中会考,解读高中学业水平考试与高中会考区别
  20. 扩展金山提示框,使之带颜色(二)

热门文章

  1. 媒体管理软件Jellyseerr
  2. 离开nbsp;果真如此轻易?
  3. DIN14 IPO系列 一路输入四路输出 模拟信号隔离分配器 光耦隔离
  4. 谷歌眼镜设计规范之沉浸式
  5. FFmpeg手撕视频(Android端)
  6. xp系统简单tcpip服务器,xp系统没有tcpip协议怎么办,xp安装tcpip协议的方法
  7. windows下查看lib,dll包含函数名
  8. Java 打印等边三角形
  9. 【Xilinx DDR3】Xilinx FPGA DDR3深度介绍
  10. H5新特性百度地图SDK--API引入、地图控件、地理编码与逆地理编码、地图标注、路径规划(基于2.0)