关于组合 继承

Posted cutepig

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于组合 继承相关的知识,希望对你有一定的参考价值。

关于组合 继承

在c++中,应该何时用继承,何时用包含?

技术图片

Homunculus

说什么is-a has-a都是扯淡的。鸭子是一种嘎嘎叫的鸟,是一种吃肉的鸟,鸽子是咕咕叫的鸟,是吃谷子的鸟,都是is-a,用继承的都是脑袋有泡。软件工程有个跟科学与数学相悖的经验:抽象程度越高,能应对的变化越少。面向对象对上面所说的复杂的情况就不适用了,泛型编程绝大多数都用作基本容器,有些人用C++模板写的自以为通用的程序,到头来只兼容自己的需求,甚至自己加东西的时候还要改模板。许多程序员都是自以为是、一厢情愿的认为会有不同需求、自己的抽象能应对不同需求,谬也。减少抽象,不要多想,有啥功能就写啥,该if就if,该函数就函数,是码农减少工作量的重要手段。回到问题。我举的例子是说明is-a/has-a并不能良好的区分继承与组合(就是题目中的包含),然后说明了继承应对复杂变化有些吃力。那么到底什么时候用继承什么时候用组合呢?不知道,具体情况具体分析。继承实现起来比较简单,如果当前情况可以用的话就先用着,将来复杂了再把某个函数抽出来当一个类来包含。用继承与组合的时候不要过多考虑类和对象的关系,仅仅从少写代码的角度入手,许多东西就豁然开朗。

ref

https://www.zhihu.com/search?type=content&q=%E7%BB%84%E5%90%88%20%E7%BB%A7%E6%89%BF
https://www.zhihu.com/topic/19569910/hot

以上是关于关于组合 继承的主要内容,如果未能解决你的问题,请参考以下文章

关于Kubernetes 中通过 Kustomize 实现YAML资源文件组合与继承的一些笔记

关于Kubernetes 中通过 Kustomize 实现YAML资源文件组合与继承的一些笔记

关于JavaScript的原型继承与原型链

关于Code Review

面试官问我:CSS有哪些属性可以继承?

设计模式之美——多组合少继承