
文章插图
这部分代码在当下看着没啥毛病,实现了车的几个基本功能,我们也可以通过子类去扩展出各种车 。
但是现在出现了新能源车,新能源车是不需要加油的 。当然除了加油这个功能不需要,其他几个车的基本功能还是需要的 。
如果新能源车直接继承车这个父类的话,就出现了第一个问题 ,大猩猩与香蕉问题 。这个问题的意思是我们现在只需要一根香蕉,但是却得到了握着香蕉的大猩猩,大猩猩其实我们是不需要的,但是父类还是强塞给了子类 。继承虽然可以重写父类的方法,但是并不能选择需要继承什么东西 。
另外单个父类很难描述清楚所有场景,这就导致我们可能又需要新增几个不同的父类去描述更多的场景 。随着不断的扩展,代码势必会存在重复,这也是继承存在的问题之一 。
除了以上两个问题,继承还存在强耦合的情况,不管怎么样子类都会和它的父类耦合在一起 。
既然出现了强耦合,那么这个架构必定是脆弱的 。一旦我们的父类设计的有问题,就会对维护造成很大的影响 。因为所有的子类都和父类耦合在一起了,假如更改父类中的任何东西,都可能会导致需要更改所有的子类 。
如何解决继承的问题
继承更多的是去描述一个东西是什么,描述的不好就会出现各种各样的问题,那么我们是否有办法去解决这些问题呢?答案是组合 。
什么是组合呢?你可以把这个概念想成是,你拥有各种各样的零件,可以通过这些零件去造出各种各样的产品,组合更多的是去描述一个东西能干什么 。
现在我们把之前那个车的案例通过组合的方式来实现 。

文章插图
从上述伪代码中想必你也发现了组合比继承好的地方 。无论你想描述任何东西,都可以通过几个函数组合起来的方式去实现 。代码很干净,也很利于复用 。
- 2022年彭禺厶最新玄幻电影 彭禺厶阴阳先生系列电影
- 银饰锻制是苗族民间独有的技艺其中整套银饰系列之首是?蚂蚁新村今日答案最新5.29
- 【抖音别碰xxx老婆的手机壁纸】全套别碰手机警告追星系列分享
- 奥特曼系列ol万能碎片怎么用
- iphone13系列都是哪里生产的
- VICTORIA S SECRET新款泳装内衣系列
- 温岚代言华歌尔High Q系列内衣
- 喜羊羊与灰太狼系列第一部叫什么
- BENETTON性感休闲系列内衣
- 极品飞车哪几代有自由模式 极品飞车系列哪个最好玩
