Я полностью переписываю старую библиотеку, и я не уверен, как справиться с этой ситуацией (ради понимания, все приветствуют аналогию с байками):
У меня есть следующие классы:
-
TBike- сам байк -
TBikeWheel- одно из велосипедных колес -
TBikeWheelFrontиTBikeWheelBack, оба наследуются отTBikeWheel, а затем реализуют конкретные вещи, которые им нужны поверх
Это довольно просто, но теперь я решил создать несколько видов велосипедов, каждый из которых имеет свои собственные колеса - они делают то же самое, что и обычные передние/задние колеса, а также специальные для этого велосипеда.
-
TBikeXYZ- наследует отTBike -
TBikeWheelXYZ- наследует отTBikeWheel
И вот моя проблема: TBikeWheelFrontXYZ должен наследовать от TBikeWheelXYZ (для получения конкретных методов колеса XYZ), но он также должен унаследовать от TBikeWheelFront (чтобы получить конкретные методы переднего колеса).
Мой вопрос здесь в том, как я могу реализовать это так, как это не делает:
- чувствовать себя как хак
- заставить меня переписать один и тот же код несколько раз