合成复用原则

合成复用原则的定义如下:

合成复用原则(Composite Reuse Principle,CRP):尽量使用对象组合,而不是继承来达到复用的目的。

合成复用原则强调,如果一个功能可以同时通过继承与组合实现,应该首先考虑使用组合。首先,相对于继承来说,组合能让代码变化的修改范围变得更小。一个父类发生变化,它的子类也会随之发生变化。其次,继承破坏了系统的封装性,父类的实现细节被暴露给了子类。而组合则相反,一个类将另一个类作为它的成员时,知道该类实现细节就可以使用该对象实现功能。最后,从父类继承来的功能是静态的,不能在运行时改变,而通过组成获得的功能是动态的,具有更高的灵活性。