前言

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

最新文章

  1. putty提供的两个文件传输工具PSCP、PSFTP详细介绍
  2. 时间同步ntp服务的安装与配置(作为客户端的配置
  3. JAVAScript柯里化、部分应用参数终极理解
  4. select制作分层级目录,让select显示和可下拉选择的"不一样"
  5. 【云计算】Docker Nginx示例
  6. 2015CCPC小记
  7. 【持久化框架】Mybatis与Hibernate的详细对比
  8. iOS开发之pch文件
  9. Swift入门(五)——数组(Array)
  10. 将字符串转json时,保持顺序
  11. iOS ReplayKit 录屏 框架的使用
  12. 近期面试总结(Android)
  13. QT.Qt qmake报错(TypeError: Property 'asciify' of object Core::Internal::UtilsJsExtension)
  14. 04单例模式Singleton
  15. java基础基础总结----- Date
  16. 0005python中的静态方法和类方法
  17. dkh人力资源大数据解决方案整体架构
  18. react篇章-React Props
  19. IE11与Cognos怪谈
  20. c++中带返回值函数没写return能通过编译但运行时会出现奇怪问题

热门文章

  1. FCC---Make Motion More Natural Using a Bezier Curve--- juggling movement
  2. flex弹性布局没有生效
  3. java 和 spring 的异步
  4. 029.[转] SSO单点登录的通用架构实现
  5. Mysql—数据导入与导出
  6. Bn Bp Binder native层关系
  7. keeplived+lvs(主从热备+负载均衡)
  8. SLAM中的非线性优化
  9. 解决4K屏电脑显示问题
  10. 【新特性速递】树控件结构由单层 TR 改为 TR-TD-TABLE 层级嵌套