Loy*_*ana 1 java design-patterns bridge decorator
我对使用哪种模式设计以下场景感到困惑,
Interface GearBox {
int upshift();
int downshift();
int reverse();
}
AutoGearBox implements GearBox{...}
ManualGearBox implements GearBox{...}
Run Code Online (Sandbox Code Playgroud)
现在我想将DualClutchGearBox添加到层次结构中.以前的所有变速箱都是单离合器.我该怎么做呢?
装饰师 - >
DualClutchDecorator implements GearBox{
DualClutchDecorator(GearBox box){...}
}
Run Code Online (Sandbox Code Playgroud)
用桥 - >
GearBox{
GearBoxImpl impl;
....
}
AutoGearBox implements GearBox{...}
ManualGearBox implements GearBox{...}
abstract class GearBoxImpl{}
SingleClutchImpl extends GearBoxImpl{...}
DualClutchImpl extends GearBoxImpl{...}
Run Code Online (Sandbox Code Playgroud)
哪一个更好,为什么?
Decorator必须与想要装饰的对象的接口匹配.考虑到这一点,您可以在不违反界面的情况下为装饰对象添加附加行为.请记住,装饰器的界面可以为您的对象提供额外的功能.
另一方面,桥梁没有这个限制.面向客户端的接口可以与底层的组件不同,并提供实现.它构成了客户端接口和实际实现之间的桥梁.