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

Ali*_*Ali 18 java abstraction design-patterns bridge

我从不同的文章中学习了Bridge模式,并且按照我的理解实现了它.令我困惑的一件事是桥模式说

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

这个陈述的含义是什么?实现是在单独的jar中吗?

什么是独立声明的含义?

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

任何帮助是极大的赞赏.

Rav*_*abu 28

BridgePattern将抽象与其实现分离.

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

来自维基百科的UML图

注意: 两个正交的类层次结构(抽象层次结构实现层次结构)使用组合(而不是继承)进行链接.此组合有助于两个层次结构独立变化.

实现永远不会引用抽象.抽象包含实现接口作为成员(通过组合).

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

形状是抽象

三角形是RedefinedAbstraction

颜色是执行者

RedColor是ConcreteImplementor

具体的Shape对象:Triangle扩展Shape但不实现Color接口.

public class Triangle extends Shape{
}
Run Code Online (Sandbox Code Playgroud)

RedColor绿彩实际实现彩色界面.

Concrete Shape对象(Triangle)独立于实现抽象(即Color接口).

Shape tri = new Triangle(new RedColor());
Run Code Online (Sandbox Code Playgroud)

这里Triangle包含一个具体的Color对象(Composition).如果在改变颜色抽象(接口),RedColor绿彩负责实施的抽象色彩的界面.

Triangle这样的形状不受Color接口合约变化的影响.因此,Color界面可以独立变化.这是可能的,因为Shape持有使用Composition而不是实现的契约.

综上所述,

  1. 桥是一种结构模式
  2. 抽象和实现不受编译时的约束
  3. 抽象和实施 - 两者都可以在客户端没有影响的情况下变化

在以下情况下使用Bridge模式:

  1. 你想要实现的运行时绑定,
  2. 您从耦合接口和众多实现中获得了大量类,
  3. 您想要在多个对象之间共享实现,
  4. 您需要映射正交类层次结构.

有用的链接:

tutorialspoint artice

dzone文章

oodesign文章

文章

相关文章:

你什么时候使用桥模式?它与适配器模式有何不同?


小智 5

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