对于一个小游戏,我想设计两个应该绘制我的单位的类。我有课程Unit
并且Settler
扩展了Unit
.
为了绘制它们,我有类UnitView
和SettlerView
.
现在UnitView
有一个方法public void draw(Graphics g)
,SettlerView
应该使用相同的方法。这两个类的区别应该在于它们获取信息以绘制单元的方式。假设Units
它们总是蓝色并且Settlers
有一个取决于他们的健康状况的颜色(这将是一个字段Settler
,SettlerView
可以访问)。
什么是实现它的正确方法?我想要一个干净的设计,没有像setColor
.
编辑:这是我的第一种方法:
public class UnitView {
private Unit unit;
public Color color; // I don't want to make it public. Setting it private + getter/setter does not seem to be different to me.
private color calculateColor() { ...uses the information of unit... }
public void draw(Graphics g) { ...something using the Color... }
}
public class SettlerView extends UnitView {
private Settler settler;
private color calculateColor() { ...this method overides the one of UnitView.... }
}
我想用多态来调用UnitView.draw。关键是公共字段颜色。