【发布时间】:2012-10-30 19:15:45
【问题描述】:
我对使用哪种模式来设计以下场景感到困惑,
Interface GearBox {
int upshift();
int downshift();
int reverse();
}
AutoGearBox implements GearBox{...}
ManualGearBox implements GearBox{...}
现在我想将 DualClutchGearBox 添加到层次结构中。以前的所有变速箱都是单离合器。我该怎么做?
带装饰器 -->
DualClutchDecorator implements GearBox{
DualClutchDecorator(GearBox box){...}
}
带桥 -->
GearBox{
GearBoxImpl impl;
....
}
AutoGearBox implements GearBox{...}
ManualGearBox implements GearBox{...}
abstract class GearBoxImpl{}
SingleClutchImpl extends GearBoxImpl{...}
DualClutchImpl extends GearBoxImpl{...}
哪个更好,为什么?
【问题讨论】:
-
这取决于
DualClutchGearBox需要如何不同于GearBox。 -
接口是一样的,只是换档时离合器的使用方式不同
-
这是内部实现 - 它不会出现在界面中。这就是接口的全部意义所在。
标签: java design-patterns decorator bridge