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