【设计模式】Bridge
程序员文章站
2022-07-04 09:33:34
前言 Bridge设计模式,将一个复杂类分成可以单独开发的部分。分成的两个部分,abstraction,implementation。字面上是抽象和实现,但不同于抽象方法及其实现。下面摘录Wiki的两句话。 decouple an abstraction from its implementatio ......
前言
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类似,但是这两个模式所解决的问题是不一样的。
- 当一个类的变化处在两个维度,一个类违反了单一职责原则的时候。
总结
这篇博客太水了。