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

有这样一个用例。

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

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值