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

有这样一个用例。

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

猜你喜欢

转载自daojin.iteye.com/blog/2332271