• 设计模式之结构型(4)-桥接模式(Bridge)


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

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

    1.1 UML定义类图

    image

    1.2 类的定义

    示例

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

    代码

    image

  • 相关阅读:
    有关系统架构的高可用原则
    Redis面试篇 -- 如何保证缓存与数据库的双写一致性?
    Redis面试篇 -- Redis常见性能问题和解决方案?
    Redis面试篇 -- Redis主从复制原理
    Python3如何安装pip工具?
    Redis面试篇 -- Redis持久化的方式有哪些?优缺点分别是什么?
    Linux在丢失的情况下重置密码
    APC (Asynchronous Procedure Call)
    eigenface资料整合
    python+opencv模拟生成运动模糊核
  • 原文地址:https://www.cnblogs.com/lihuali/p/7492940.html
Copyright © 2020-2023  润新知