【发布时间】:2010-11-19 09:11:54
【问题描述】:
我正在尝试弄清楚如何为我正在实现的 Carrier 类设计类层次结构。
我目前有一个抽象基类 Carrier。
我有另一个抽象类 TimedCarrier(TC),它使用时间和域相关信息扩展 Carrier。具体类扩展自 Carrier 和 TimedCarrier。
用户需要一个进度监视器,所以我创建了一个从 Carrier 扩展的抽象类 MonitoredCarrier(MC)。具体类从 Monitored Carrier 扩展而来。
在用户需求发生变化之前,这可以正常工作一段时间。现在我需要一个 MonitoredTimedCarrier。我显然不能同时继承 TC 和 MC。我正在考虑将 MC 实现为接口:
class TimedCarrier implements IMonitored
class Carrier implements IMonitored
(因为在这个领域的上下文中这对我来说更有意义,我应该能够监控 Carriers 是否定时),但是 MC 是丰富实现的类,我将不得不复制粘贴所有将方法转换为过去从 MC 扩展而来的类。我不想重复代码。
然后我将如何解决这个问题?谢谢。
[编辑]
TimedCarrier 使用一组成员变量和 getter/setter 方法扩展了 Carrier。 MonitoredCarrier 使用成员变量、getter/setter 方法和一系列与监视器一起使用的方法扩展 Carrier。
class TimedCarrier extends Carrier {
int var1..
int var2..
public void setVar1(int var1) {...}
public int getVar1() {...}
....
}
class MonitoredCarrier extends Carrier {
int var1..
int var2..
public void setVar1(int var1) {...}
public int getVar1() {...}
....
public void monitorSomething() {...}
public void monitorOtherSomething() {...}
}
【问题讨论】:
标签: java subclassing