【发布时间】:2017-10-02 14:40:38
【问题描述】:
我有一个包含以下类的设计:
public class Book {
protected BookColorType color;
public Book (BookColorType color) {
...
}
}
public enum BookColorType {
BLACK, WHITE
}
public enum ColorBookColorType {
BLACK, WHITE, RED, BLUE, GREEN
}
public class ColorBook extends Book {
protected ColorBookColorType color;
public ColorBook(ColorBookColorType color) {
// this will cause error has ColorBookColorType is not the same type as BookColorType
}
}
如何使用 Java 和更好的类设计来实现上述功能? 重点是 Book 应该只与 BookColorType 相关联,而 ColorBook(是一本书),并且只与 ColorBookColorType 相关联(BLACK 和 WHITE 重复)。
请指教,谢谢。
【问题讨论】:
-
在这种情况下,是什么让
ColorBook成为Book?您认为目前的实施有什么可疑之处? -
您已经提供了 Java 实现,那么您的问题是什么?至于设计:最好让
Book是一个接口或抽象类和另一个实现/子类,如NonColoredBook。我的问题是我无法想象这里的颜色会表示什么,即黑书与白书有何不同?需要详细说明吗? -
对我来说,这听起来像是一个糟糕的设计和滥用继承。
-
我没有在这里展示课程的所有内容。我的主要问题是我是否有这样的类继承,并且它们都有一个字段“颜色”,当颜色在这里有某种关系时。我会寻找更好的设计。
标签: java class inheritance enums