【设计模式】Bridge
2024-09-05 23:54:28
前言
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
应用场景
- 当需要运行时更改implementation的时候。和Strategy类似,但是这两个模式所解决的问题是不一样的。
- 当一个类的变化处在两个维度,一个类违反了单一职责原则的时候。
总结
这篇博客太水了。
参考
- https://stackoverflow.com/questions/319728/when-do-you-use-the-bridge-pattern-how-is-it-different-from-adapter-pattern
- https://en.wikipedia.org/wiki/Bridge_pattern
最新文章
- putty提供的两个文件传输工具PSCP、PSFTP详细介绍
- 时间同步ntp服务的安装与配置(作为客户端的配置
- JAVAScript柯里化、部分应用参数终极理解
- select制作分层级目录,让select显示和可下拉选择的";不一样";
- 【云计算】Docker Nginx示例
- 2015CCPC小记
- 【持久化框架】Mybatis与Hibernate的详细对比
- iOS开发之pch文件
- Swift入门(五)——数组(Array)
- 将字符串转json时,保持顺序
- iOS ReplayKit 录屏 框架的使用
- 近期面试总结(Android)
- QT.Qt qmake报错(TypeError: Property 'asciify' of object Core::Internal::UtilsJsExtension)
- 04单例模式Singleton
- java基础基础总结----- Date
- 0005python中的静态方法和类方法
- dkh人力资源大数据解决方案整体架构
- react篇章-React Props
- IE11与Cognos怪谈
- c++中带返回值函数没写return能通过编译但运行时会出现奇怪问题