前言

Bridge设计模式,将一个复杂类分成可以单独开发的部分。分成的两个部分,abstraction,implementation。字面上是抽象和实现,但不同于抽象方法及其实现。下面摘录Wiki的两句话。

decouple an abstraction from its implementation so that the two can vary independently

这句话,讲的是这个模式的定义。Bridge将abstraction从implementation中抽取出来,让abstraction和implementation这两个部分可以单独的变化。

The class itself can be thought of as the abstraction and what the class can do as the implementation.

这句话太精髓了!复杂类究竟该怎么分成两个部分?这句话给出了回答。一部分是我们看这个类应该是怎么样子的,另一部分是它可以做什么。

例子

下面改一改来自[1]的回答。

When:

         ----Animal----
         /            \
      Dog              Cat
    /     \          /     \
RunDog  SleepDog RunDog SleepDog

Refactor to:

        ----Animal----                    Behavior
        /            \                     /   \
Dog(Behavior)   Cat(Behavior)           Run   Sleep

应用场景

  1. 当需要运行时更改implementation的时候。和Strategy类似,但是这两个模式所解决的问题是不一样的。
  2. 当一个类的变化处在两个维度,一个类违反了单一职责原则的时候。

总结

这篇博客太水了。

参考

  1. https://stackoverflow.com/questions/319728/when-do-you-use-the-bridge-pattern-how-is-it-different-from-adapter-pattern
  2. https://en.wikipedia.org/wiki/Bridge_pattern

【设计模式】Bridge的更多相关文章

  1. C++设计模式-Bridge桥接模式

    作用:将抽象部份与它的实现部份分离,使它们都可以独立地变化. 将抽象(Abstraction)与实现(Implementation)分离,使得二者可以独立地变化. 桥接模式号称设计模式中最难理解的模式 ...

  2. 一天一个设计模式——Bridge桥接模式

    一.概念准备 在理解桥接模式之前,先要理解面向对象程序设计中的两个概念: 类的功能层次结构:假设现在有一个类Something,这个类有一些成员属性和成员方法,但是现有的功能不能满足要求,因此我们想扩 ...

  3. 设计模式 - Bridge 桥模式

    Bridge桥模式也属于"的单一职责"模式中的典型模式.问题描述:我们绘制图形时,图形可以有不同形状以及不同颜色,比如圆形可以是红的,绿的,方形可以是红的绿的,如果用代码来描绘这些 ...

  4. 设计模式-Bridge(结构型模式)-用于客户需求较多,频繁对类进行添加修改的情形,将抽象类与具体实现类分开

    以下代码来源: 设计模式精解-GoF 23种设计模式解析附C++实现源码 //AbstractionImp.h #pragma once class AbstractionImp { public: ...

  5. Java 设计模式实现 不错的引用

    这段时间有兴趣重新温习一下设计模式在Java中的实现,碰巧看到一个不错的设计模式总结,这里引用一下作为参考. 创建型模式: JAVA设计模式-Singleton JAVA设计模式-Factory JA ...

  6. [php]php设计模式 (总结)

    转载自[php]php设计模式 (总结) 传统的23种模式(没有区分简单工厂与抽象工厂) http://www.cnblogs.com/bluefrog/archive/2011/01/04/1925 ...

  7. 《PHP设计模式大全》系列分享专栏

    <PHP设计模式大全>已整理成PDF文档,点击可直接下载至本地查阅https://www.webfalse.com/read/201739.html 文章 php设计模式介绍之编程惯用法第 ...

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

    一.桥接模式简介(Brief Introduction) 桥接模式(Bridge Pattern),将抽象部分与它的实现部分分离,使的抽象和实现都可以独立地变化. Decouple an abstra ...

  9. 设计模式学习之桥接模式(Bridge,结构型模式)(15)

    参考地址:http://terrylee.cnblogs.com/archive/2006/02/24/336652.html 概述 在软件系统中,某些类型由于自身的逻辑,它具有两个或多个维度的变化, ...

  10. 设计模式之美:Bridge(桥接)

    索引 别名 意图 结构 参与者 适用性 效果 相关模式 实现 实现方式(一):使用 Bridge 模式分离抽象部分和实现部分. 别名 Handle Body 意图 将抽象部分与它的实现部分分离,使它们 ...

随机推荐

  1. FCC---Make Motion More Natural Using a Bezier Curve--- juggling movement

    This challenge animates an element to replicate the movement of a ball being juggled. Prior challeng ...

  2. 连接常见错误linker command failed with exit code 1 (use -v to see invocation)

    这种问题,通常出现在添加第三方库文件或者多人开发时. 这种问题一般是找不到文件而导致的链接错误. 我们可以从如下几个方面着手排查. 1.以如下错误为例,如果是多人开发,你同步完成后发现出现如下的错误. ...

  3. hadoop 自定义OutputFormat

    1.继承FileOutputFormat,复写getRecordWriter方法 /** * @Description:自定义outputFormat,输出数据到不同的文件 */ public cla ...

  4. 1.JavaCC安装与测试

      下面介绍的是JavaCC在windows系统中的安装与小代码测试过程. 一.JavaCC安装   步骤 :在JavaCC的官网首页下载JavaCC,然后配置电脑的环境变量,接着在dos命令行里就可 ...

  5. windows10 设置 socks5 代理

    这个很多年前就是这种方式了,最近配置又忘了,今天备份一下: 方法1: 方法2: 原文链接 如果能帮助到你,希望能点击右下角推荐,感谢!

  6. base46+url编码

    base64解密+unquote url编码 html = ''' JTdCJTIyc3RvcmUlMjIlM0ElN0IlMjJnYW1lTGlicmFyeSUyMiUzQSU3QiUyMmRpc2 ...

  7. 【Eureka篇三】Eureka集群配置(5)

    1. 新建子模块microservicecloud-eureka-7002(后面简称7002) 和 microservicecloud-eureka-7003(后面简称为7003),packaging ...

  8. Ant风格路径表达式

    ANT通配符有三种: ? 匹配任何单字符 * 匹配0或者任意数量的字符 ** 匹配0或者更多的目录 举例: /project/*.a 匹配项目根路径下所有在project路径下的.a文件 /proje ...

  9. Ubuntu下的录GIF神器——Peek

    最近一直在找Ubuntu下面录GIF好用方便的软件一直没找到,很多都是要获取录屏四角的坐标,现在终于找到了,就是我们的录GIF神器——Peek. 1 获取Peek的ppa源 sudo add-apt- ...

  10. 20191031 Codeforces Round #539 (Div. 1) - Virtual Participation

    这场怎么全是数据结构题...