我从不同的文章中学习了Bridge模式,并且按照我的理解实现了它.令我困惑的一件事是桥模式说
BridgePattern将抽象与其实现分离,以便两者可以独立变化
这个陈述的含义是什么?实现是在单独的jar中吗?
什么是独立声明的含义?
考虑到提供的journaldev文章,详细说明答案.
任何帮助是极大的赞赏.
解决方法:
BridgePattern将抽象与其实现分离.
抽象和实现可以独立变化,因为具体类不直接实现抽象(接口)
注意:两个正交的类层次结构(抽象层次结构和实现层次结构)使用组合(而不是继承)进行链接.这种组合有助于两个层次结构独立变化.
实现永远不会引用抽象.抽象包含实现接口作为成员(通过组合).
回到有关journaldev文章中示例代码的问题:
形状是抽象
三角形是RedefinedAbstraction
颜色是执行者
RedColor是ConcreteImplementor
具体的Shape对象:Triangle扩展Shape但不实现Color接口.
public class Triangle extends Shape{
}
RedColor和GreenColor实际上实现了Color接口.
Concrete Shape对象(Triangle)独立于实现抽象(即Color接口).
Shape tri = new Triangle(new RedColor());
这里Triangle包含一个具体的Color对象(Composition).如果颜色抽象(界面)有变化,RedColor和GreenColor负责实现Color界面的抽象.
像Triangle这样的形状不受Color接口合约更改的影响.因此,Color界面可以独立变化.这是可能的,因为Shape持有使用Composition而不是实现的契约.
综上所述,
>桥梁是一种结构模式
>抽象和实现不受编译时的约束
>抽象和实施 – 两者都可以在不影响客户的情况下变化
在以下情况下使用Bridge模式:
>您想要实现的运行时绑定,
>您从耦合接口和众多实现中获得了大量的类,
>您想在多个对象之间共享实现,
>您需要映射正交类层次结构.
有用的链接:
tutorialspoint artice
dzone文章
oodesign文章
相关文章:
When do you use the Bridge Pattern? How is it different from Adapter pattern?