桥接模式是否将抽象与实现分离?

2022-09-02 12:17:47

我从不同的文章中学习了Bridge模式,并且我已经根据我的理解实现了它。让我感到困惑的一件事是桥梁模式说

BridgePattern将抽象与其实现分离,以便两者可以独立变化

这句话的含义是什么?实现是否驻留在单独的 jar 中?

变化独立陈述的含义是什么?

考虑到提供的journaldev文章,详细说明答案。

任何帮助都非常感谢。


答案 1

BridgePattern 将抽象与其实现分离

抽象实现可以独立变化,因为具体类不直接实现抽象(接口)

UML Diagram from Wikipedia

关键说明:两个正交的类层次结构抽象层次结构y 和实现层次结构)使用组合(而不是继承)进行链接。此组合有助于两个层次结构独立变化。

实现从不引用抽象。抽象包含作为成员的实现接口(通过组合)。

回到您关于journaldev文章中的示例代码的问题:

形状就是抽象

三角形被重新定义抽象

颜色是实现者

RedColor是ConcreteImplementor

一个具体的 Shape 对象:三角形扩展 Shape,但不实现 Color 接口。

public class Triangle extends Shape{
}

RedColorGreenColor实际上实现了Color接口。

具体形状对象(三角形)独立于实现抽象(即颜色接口)。

Shape tri = new Triangle(new RedColor());

这里三角形包含一个具体的彩色对象(构图)。如果颜色抽象(接口)中存在更改,则 RedColorGreenColor 负责实现 Color 接口的抽象。

三角形这样的形状不受“颜色”界面的合约更改的影响。因此,颜色界面可以独立变化。这是可能的,因为 Shape 持有使用组合而不是实现协定。

综上所述,

  1. 桥梁是一种结构模式
  2. 抽象和实现在编译时不受绑定
  3. 抽象和实现 - 两者都可以变化而不会对客户端产生影响

在以下情况下使用网桥模式:

  1. 您希望实现的运行时绑定,
  2. 您拥有来自耦合接口的类激增和众多实现,
  3. 您希望在多个对象之间共享一个实现,
  4. 您需要映射正交类层次结构。

有用的链接:

教程点艺术

dzone 文章

oodesign article

源码制作文章

相关文章:

何时使用桥接模式?它与适配器模式有何不同?


答案 2

这个语句只是意味着,你可以在运行时切换实现器,抽象指向它,一切都应该工作(就像在策略模式中一样;但在策略模式中,只有策略是抽象的)。它也可以理解为将两个类分开,这样它们就不必知道彼此,而不仅仅是它们的接口。


推荐