白话我对“多用组合,少用继承”的理解

以鸟类为例,假设有个父类 bird,这个父类有个 fly 的抽象方法。

如果用继承,那就默认所有鸟类都会飞。但根据“黑天鹅”理论,并不是所有的鸟类都会飞。

这时候使用组合的话,就等于乐高拼搭。我这只鸟如果会飞,就把 fly 这个方法积木拿过来搭上。

当然就像标题写的,“多用”组合,“少用”继承,而不是“全用”组合,“不用”继承,千万别钻牛角尖,继承它的“协议”特性还是有很大作用的,因此具体还是要看应用场景。

posted @ 2021-06-07 17:18  尹宇星_Kim  阅读(112)  评论(0编辑  收藏  举报