设计模式Bridge Design pattern 桥接模式

Posted 只要你一直跑

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了设计模式Bridge Design pattern 桥接模式相关的知识,希望对你有一定的参考价值。

1.桥接模式要解决的问题

多个维度的变化引起的继承组合指数级增长

例子

一个物体有不同形状和不同颜色,如何用类来表示它们,这里包含了两个变化维度,一个是物体的形状,一个是颜色

继承的方式


如果使用继承的方式,此时要增加一个形状就要多两个类,或者增加一个颜色也要多两个类,这个增长是指数级的

组合的方式


如果是组合的方式,此时增加一个形状,那就只需要增加一个形状的类,要增加一个颜色也只用增加一个颜色的类,变化就被控制住了

2.实际使用场景

JDBC API和JDBC Driver, JDBC API接口去管理连接和解析操作返回的数据,但是底层具体是怎么做连接的,怎么做查询的是JDBC Driver来做的,在使用JDBC API的时候需要指定不同的JDBC Driver,这也是桥接模式的一个特点,具体实现是需要在使用的时候再指定的

3.桥接模式的结构

将一个很大的类或者一堆紧密相关的类拆分成抽象和接口,让他们分别来管理不同的变化
由一个抽象的类包含一个接口组成。抽象的类像是一个提供功能的API,共client直接使用。被组合的接口往往提供原子的方法,这些原子方法往往被抽象类直接调用或者组合使用。接口可以有很多种不同的实现,而抽象类也可以有自己的子类去扩展更多的功能

4.桥接模式相关的设计原则和面向对象特性

  1. 封装
    高层不需要知道底层实现的细节,比如在使用JDBC API的时候,只需要用Class.forName()指定一个driver,不需要知道driver是怎么实现的
  2. SOLID-Open close原则
    每次加一个维度的类,只需要新建新的抽象类或者新建新的实现即可,不需要改动任何类,比如,如果要实现不同的API,那就新加一个API的类,如果要新建不同的数据库实现,那就新加一种driver
  3. SOLID-Single responsibility原则
    将一个大类划分成了不同的类来负责做不同的事情,职责更单一了

5.和其他模式的联系

1.和Adapter的类似点
2.和State,strategy的类似点
3.可以和抽象工厂
4.可以和Builder模式组合使用

参考文献:https://refactoring.guru/design-patterns/bridge

[design pattern] Category

// 创建型

1. Factory method / Static Factory

2. Abstract Factory

3. Builder

4. ProtoType

5. Singleton

// 结构型

6. Adaptor

7. Bridge

8. Composite

9. Decorator

10. Facade

11. Flyweight

12. Proxy

// 行为型

13. Chain of Responsibility

14. Command

15. Interpreter

16. Iterator

17. Mediator

18. Memento

19. Observer

20. State

21. Strategy

22. Template Method

23. Visitor 

以上是关于设计模式Bridge Design pattern 桥接模式的主要内容,如果未能解决你的问题,请参考以下文章

适配器模式 桥接模式

桥接模式(Bridge Pattern)

设计模式 -- 桥接模式(Bridge Pattern)

php桥接模式(bridge pattern)

桥接模式(Bridge Pattern)

桥接模式(Bridge Pattern)