zoukankan      html  css  js  c++  java
  • 设计模式之结构型(4)-桥接模式(Bridge)

    (一)定义:将抽象部分与它的实现部分分离,使它们都可以独立地变化。(将一个对象多维度的变化分离)

    ① 桥接模式主要用意是为了实现抽象部分与实现部分脱耦,使它们各自可以独立变化。
    ② 在开发过程中通常会遇到一个对象有两个变化维度,而且这两个维度变化地非常剧烈,这种变化导致了纵横交错的结果,使对象的设计变得困难,并且在对象数量上和可扩展性上都带来了很大的麻烦。此时我们应当把这两个变化比较剧烈的维度拆离,然后用组合的方式把它们结合在一起。这就是桥接器模式的思想
    相关模式:适配器模式,策略模式

    1.1 UML定义类图

    image

    1.2 类的定义

    示例

    场景一:假设用蜡笔画一幅画。要使用12种颜色,且有大中小号蜡笔来画,则需要36种不同的蜡笔。但是如果我们用大中小三种不同的毛笔,再配上12种不同的颜色。则只需要12+3=15个对象就可以完成绘画。
      实际上,蜡笔和毛笔的关键一个区别在于笔和颜色是否能够分离。桥梁模式的用意是“将抽象化与实现化脱耦,使得二者可以独立地变化”。关键就在于能否脱耦。蜡笔的颜色和蜡笔本身是分不开的,所以造成必须使用36支色彩、大小各异的蜡笔来绘制图画。而毛笔与颜料能够很好的脱耦,各自独立变化,便简化了操作。在这里,抽象层面的概念是:“毛笔用颜料作画”,而在实现时,毛笔有大中小三号,颜料有红绿蓝等12种,于是便可出现3*12种组合。每个参与者(毛笔与颜料)都可以在自己的自由度上随意转换。
      蜡笔由于无法将笔与颜色分离,造成笔与颜色两个自由度无法单独变化,使得只有创建36种对象才能完成任务。桥接模式将继承关系转换为组合关系,从而降低了系统间的耦合,减少了代码编写量。

    代码

    image

  • 相关阅读:
    java8新特性LocalDate、LocalTime、LocalDateTime的学习
    vue在移动端使用alloyfinger手势库操作图片拖拽、缩放
    移动端设置滚动后显示滚动条
    springboot使用swagger2生成开发文档
    学习Validator验证框架总结
    对于线程池ThreadPool的学习总结
    apache-commons和guava的工具类
    Mac中anaconda中创建虚拟python环境,配置flask
    ubuntu系统中解决桌面分辨率不适配问题
    Linux服务器命令说明
  • 原文地址:https://www.cnblogs.com/lihuali/p/7492940.html
Copyright © 2011-2022 走看看