类继承的设计

公司新来一个小伙,设计类的时候喜欢这么搞,例如要实现一个串口通讯类,他会把基类做的很复杂,然后靠重载某些函数来实现不同的协议,虽然我一直觉得很别扭,但是也没有找出合适的理由来说服他。

今天下午偶然讨论起来,我突然想起一个类比,我举了一个猫和狗的类比。例如说我们要实现一个猫类,一个狗类,小伙的方法是先实现一个狗,然后让猫继承自狗,然后把所有猫和狗不同的行为进行重载,实现出一个猫来。而一般做法是,先实现一个动物,然后实现猫和狗,总共需要3个类。

为什么小伙这种方法有问题呢,是因为你如果让猫继承自狗,这样实现狗的类时候,就会带很重的狗的味道,你把狗改成猫,虽然看起来像猫了,但是一般你还是闻得出来一些狗的味道。更坏的情况是,如果某一天,因为某种需求,狗添加了一些的特征,而猫没有去重载,就会让猫里面出现狗的特征。而实现三个类这种设计,这猫里面最多会没有这个新特征,而不会出现狗的特征。而且,实现动物的时候,也不会考虑狗的一些特质,这样,猫里面也就不会有狗的味道。这是很重要的。 

 

转载于:https://www.cnblogs.com/dabbler/p/5173264.html

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值