2 回答
TA贡献1817条经验 获得超14个赞
您可以使用的语言结构是接口或抽象类。
接口:定义不相关对象之间的通用行为(例如,可以序列化的对象、可以比较的对象等)。
抽象类:定义跨对象层次结构的公共行为(例如,在 中定义方法并
getPrice
在 中Item
继承该方法是有意义的Weapon
)。
在你的榜样,等方法getWidth()
,getHeight()
,getX()
和getY()
都不错的候选人接口(因为它们共享不相关的对象之间有一些共同的特点)。
TA贡献1806条经验 获得超8个赞
// Another way to share this state would be via a Point interface and
// aggregating two point objects in your Item and Character classes
interface Coordinates {
double getX1();
double getY1();
double getX2();
double getY2();
}
interface Dimension {
double getWidth();
double getHeight();
}
我不知道你的整个背景,但你确定你需要坐标和尺寸(我认为你可以从 X 和 Y 确定宽度和高度)?
这些接口应该由您的两个祖先类(Character和Item)实现并通过层次结构继承。难道不是之间添加一个共同的祖先Character和Item只是让你能避免实施getX和getY的两倍。
关于move方法,我认为这是另一个责任,您应该在其他地方定义它。
// Not necessarily the right name
class MoveHelper {
// You can pass either a Character or an Item here
// since both implement Coordinates
// Not necessarily the right signature
void move (Coordinates object)
}
根据您选择如何设计解决方案,该move方法可以成为一个static地方或一个对象,你会聚集在这两个Character和Item并委托给它的move实施。
最后一点,请考虑您可以通过继承(接口和抽象类)或组合(如果您将MoveHelper和 委托给它以move实现Character和 中的实现,您会怎么做)实现重用Item。
希望这可以帮助!
添加回答
举报