有这样一个用例。
People{
}
Man extends People{
}
Woman extends People{
}
WorkingMan extends Man {
}
WorkingWoman extends Woman{
}
问题来了,现在加入一个工程师和一个经理,需要写四个类
EngineerMan extends WorkingMan{
}
EngineerWoman extends WorkingWoman{
}
ManagerMan extends WorkingMan{
}
ManagerWoman extends WorkingWoman{
}
现在出现了机器人, 怎么扩展呢? ManagerRobot,
EngineerRobot, Robot, ChefRobot?
现在出现了新的职业,工程师经理, 怎么写?
至少要写三个类
EngManager extends ManagerRobot
EngManager extends ManagerMan
EngManager extends ManagerWoman
更糟糕的是,我们没法重用 Engineer 这个职业描述的代码,所有的engineer 都要重写?
很多人觉得自己不会傻到这个地步,可实际上就是这么做的,当你每次使用 extends 这个标签的时候,不会发现有什么不妥的地方。要知道,上面例子中的类可能不是一个人写的。
实际中,也不可能是一个人完成,一旦让他一个人完成,他绝对会觉得很累,不会这样写。
android 里面类似的:
View 继承n个层次
Activity 继承n个层次
Fragment 继承n个层次
还有自定义的
Event 继承n个层次。
一旦继承的层次超过了三个, 代码就会难以理解和维护。thinking in java 希望我们尽量的少用继承,但是少用不代表着不用,那么如何做才能更好呢?