我正在对一个旧库进行全面重写,但我不确定如何处理这种情况(为了便于理解,大家都欢迎自行车类比):
我有以下课程:
TBike
- 自行车本身TBikeWheel
- 自行车的一个轮子TBikeWheelFront
和TBikeWheelBack
, 都继承TBikeWheel
自然后在其之上实现他们需要的特定内容
这很简单,但现在我决定创建多种自行车,每辆自行车都有自己的轮子——它们的作用与普通的前轮/后轮相同,加上特定于该自行车的轮子。
TBikeXYZ
- 继承自TBike
TBikeWheelXYZ
- 继承自TBikeWheel
这是我的问题:TBikeWheelFrontXYZ
应该继承自TBikeWheelXYZ
(获取 XYZ 轮的特定方法),但它也应该继承自TBikeWheelFront
(获取前轮的特定方法)。
我的问题是,我怎样才能以一种不这样做的方式实现它:
- 感觉像个黑客
- 强迫我多次重写相同的代码