Я пытаюсь понять, как создать иерархию классов для класса Carrier, который я реализую.Проектирование иерархии классов без множественного наследования в Java
В настоящее время у меня есть абстрактный базовый класс Carrier.
У меня есть еще один абстрактный класс TimedCarrier (TC), который расширяет несущую со временем и информацией, относящейся к домену. Конкретные классы распространяются от Carrier и TimedCarrier.
Пользователю необходим монитор прогресса, поэтому я создаю абстрактный класс MonitoredCarrier (MC), который простирается от Carrier. Конкретные классы распространяются от Monitored Carrier.
Это работает нормально, пока пользовательские требования не изменятся. Теперь мне нужен MonitoredTimedCarrier. Я, очевидно, не могу подклассы как TC, так и MC. Я имею в виде реализации MC в качестве интерфейса:
class TimedCarrier implements IMonitored
class Carrier implements IMonitored
(так что имеет смысл для меня в контексте этой области, я должен быть в состоянии контролировать Перевозчик ли или нет, они приурочены), но MC - это богатый класс, и мне придется копировать все методы в классы, которые распространялись от MC. Я не хочу дублировать код.
Как бы я тогда решить эту проблему? Благодарю.
[Редактировать]
TimedCarrier расширяет Carrier с кучей переменных членов и методов геттер/инкубационные. MonitoredCarrier расширяет несущую с переменными-членами, методами getter/setter и множеством методов, которые работают с монитором.
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() {...}
}
Должен согласиться. Во многих случаях наследование наследования козырей. – gpampara