我一直在阅读 Java 和 oop 设计。其中一项练习是设计一个系统来保存天文物体及其一些基本属性。
该系统需要容纳恒星、星系和行星。
每个对象都有一个类型,例如星星;矮人,巨人和正常人
开始也有颜色。
到目前为止,我从一个名为 AstronomicalObject 的所有这些对象的抽象基类开始:
public abstract class AstronomicalObject {
//Is this totally pointless?
}
然后我制作了 3 个类 Star、Galaxy 和 Planet 来扩展这个类。对于这些对象的每种类型,我都制作了额外的子类,即扩展 Star 的 DwarfStar。这是一个可以接受的想法吗?额外的类感觉有点多余:
public class DwarfStar extends Star{
public final String SIZE = "DWARF";
public DwarfStar(String colour) {
super(colour);
}
}
对于颜色属性,我这样做了:
public class Star extends AstronomicalObject{
public final static String YELLOW = "YELLOW";
public final static String RED = "RED";
public final static String WHITE = "WHITE";
public final static String SIZE = "NORMAL";
private String colour;
public Star(String colour) {
this.colour = colour;
}
public String getColour(){
return this.colour;
}
}
所以要创建一个星形对象,我会使用:
DwarfStar ds = new DwarfStar(Star.YELLOW);
不幸的是,这本书没有答案页面或讨论这个练习,所以我想知道我的解决方案是否是有效的 oop 设计。或者如果它可以改进?