我试图弄清楚如何为我正在实现的 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() {...}
}