我从不同的文章中学习了桥接模式,并且根据我的理解实现了它。让我困惑的一件事是桥梁模式说
BridgePattern 将抽象与其实现分离,因此两者可以独立变化
这句话是什么意思?实现驻留在单独的 jar 中吗?
vary independently statement 是什么意思?
考虑提供的 journaldev文章,详述答案。
非常感谢任何帮助。
最佳答案
BridgePattern 将抽象与其实现分离。
抽象 和实现 可以独立变化,因为具体类不直接实现抽象(接口(interface))
要点: 两个正交类层次结构(抽象层次结构y 和实现层次结构)使用组合(而不是继承)。这种组合有助于两个层次结构独立变化。
实现从不涉及抽象。抽象包含实现接口(interface)作为成员(通过组合)。
回到您关于 journaldev 中示例代码的问题文章:
形状是抽象
三角形是重新定义的抽象
颜色是实现者
RedColor 是 ConcreteImplementor
一个具体的 Shape 对象:Triangle 扩展了 Shape 但没有实现 Color 接口(interface)。
public class Triangle extends Shape{
}
RedColor 和 GreenColor 实际上实现了 Color 接口(interface)。
Concrete Shape 对象(Triangle)独立于实现抽象(即 Color 接口(interface))。
Shape tri = new Triangle(new RedColor());
此处的Triangle 包含一个具体的Color 对象(Composition)。如果Color抽象(接口(interface))发生变化,RedColor和GreenColor负责实现Color的抽象强>界面。
Shapes,如 Triangle 不受 Color 界面契约(Contract)变化的影响。所以 Color 界面可以独立变化。这是可能的,因为 Shape 持有使用Composition 而不是implementation 的合约。
总结,
- 桥是一种结构模式
- 抽象和实现在编译时不受约束
- 抽象和实现 - 两者都可以在不影响客户的情况下发生变化
在以下情况下使用桥接模式:
- 您想要实现的运行时绑定(bind),
- 您有来自耦合接口(interface)和大量实现的类的激增,
- 您想在多个对象之间共享一个实现,
- 您需要映射正交类层次结构。
有用的链接:
dzone文章
oodesign文章
相关文章:
When do you use the Bridge Pattern? How is it different from Adapter pattern?
关于java - 桥接模式是否将抽象与实现分离?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35079629/