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