桥接模式是否将抽象与实现分离?
我从不同的文章中学习了Bridge模式,并且我已经根据我的理解实现了它。让我感到困惑的一件事是桥梁模式说
BridgePattern将抽象与其实现分离,以便两者可以独立变化
这句话的含义是什么?实现是否驻留在单独的 jar 中?
变化独立陈述的含义是什么?
考虑到提供的journaldev文章,详细说明答案。
任何帮助都非常感谢。
我从不同的文章中学习了Bridge模式,并且我已经根据我的理解实现了它。让我感到困惑的一件事是桥梁模式说
BridgePattern将抽象与其实现分离,以便两者可以独立变化
这句话的含义是什么?实现是否驻留在单独的 jar 中?
变化独立陈述的含义是什么?
考虑到提供的journaldev文章,详细说明答案。
任何帮助都非常感谢。
BridgePattern 将抽象与其实现分离。
抽象和实现可以独立变化,因为具体类不直接实现抽象(接口)
关键说明:两个正交的类层次结构(抽象层次结构y 和实现层次结构)使用组合(而不是继承)进行链接。此组合有助于两个层次结构独立变化。
实现从不引用抽象。抽象包含作为成员的实现接口(通过组合)。
回到您关于journaldev文章中的示例代码的问题:
形状就是抽象
三角形被重新定义抽象
颜色是实现者
RedColor是ConcreteImplementor
一个具体的 Shape 对象:三角形扩展 Shape,但不实现 Color 接口。
public class Triangle extends Shape{
}
RedColor和GreenColor实际上实现了Color接口。
具体形状对象(三角形)独立于实现抽象(即颜色接口)。
Shape tri = new Triangle(new RedColor());
这里三角形包含一个具体的彩色对象(构图)。如果颜色抽象(接口)中存在更改,则 RedColor 和 GreenColor 负责实现 Color 接口的抽象。
像三角形这样的形状不受“颜色”界面的合约更改的影响。因此,颜色界面可以独立变化。这是可能的,因为 Shape 持有使用组合而不是实现的协定。
综上所述,
在以下情况下使用网桥模式:
有用的链接:
教程点艺术
dzone 文章
oodesign article
源码制作文章
相关文章:
这个语句只是意味着,你可以在运行时切换实现器,抽象指向它,一切都应该工作(就像在策略模式中一样;但在策略模式中,只有策略是抽象的)。它也可以理解为将两个类分开,这样它们就不必知道彼此,而不仅仅是它们的接口。