【发布时间】:2020-09-16 13:03:58
【问题描述】:
我对 java 中的设计模式有疑问。
我有一个名为 Bottle 的课程。 现在,我有两种瓶子:玻璃瓶和金属瓶。
我应该使用以下哪种设计模式: 1. 设置瓶子的类型作为它的属性
class Bottle {
public enum BottleType { GLASS, METAL }
BottleType type;
}
- 使用继承
abstract class Bottle {
}
class GlassBottle extends Bottle {
}
class MetalBotle extends Bottle {
}
更新我的问题 瓶子将由一个名为 BottleProcessor 的处理器处理
class BottleProcessor {
public static breakBottle(Bottle _bottle) {
//TODO: break bottle
if _bottle is glass bottle
breakGlassBottle()
else if _bottle is metal bottle
breakMetalBottle()
}
}
【问题讨论】:
-
无法回答。这取决于您进一步计划如何处理这些对象。在没有任何实现的情况下,枚举是显而易见的选择。
-
使用继承是Java的方式。您可以使用 getClass().getSimpleName() 或类似的方法从实例中获取特定的类名。
-
@AdrianM。我非常不同意。有效的 Java #16:“优先组合优于继承”
-
将一种瓶型组合到另一种瓶型中?什么?
-
将瓶子的类型组合成瓶子。在没有实现的情况下,继承在这里带来了零好处,并引入了两个额外的类。
标签: oop design-patterns abstract-class