合成复用原则
Composite Reuse Principle(CRP)
基本介绍
原则是尽可能使用合成/聚合的方式,而不是使用继承
为什么不推荐使用继承
继承是面向对象的四大特性之一,用来表示类之间的is-a关系,可以解决代码复用的问题。虽然继承有诸多作用,单继承层次过深、过复杂,也会影响到代码的可维护性。在这种情况下,我们应该尽量少用,甚至不用继承。
组合相比继承有哪些优势?
- 继承主要有三个作用:表示is-a关系,支持多态性,代码复用。这三个作用都可以通过组合、接口、委托三个技术手段来达成
- 组合合能解决层次过深、过复杂的继承关系影响代码的可维护性的问题。
如何判断该用组合还是继承?
- 如果类之间的成结构稳定,层次比较浅,关系不复杂,我们可以大胆地使用继承。反之我们尽量使用组合来替代继承
- 一些设计模式,特殊的应用场景,会固定使用继承或者组合。