最大的问题是没有发现问题之一:谈谈滥用继承

来源:互联网 发布:mac spss破解版 编辑:程序博客网 时间:2024/06/14 00:06

有这样一个用例。

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 希望我们尽量的少用继承,但是少用不代表着不用,那么如何做才能更好呢?