什么是合成复用原则?
比较权威一点的解释是合成复用原则是指:尽量先使用组合或者聚合等关联关系来实现,其次才考虑使用继承关系来实现。
因为继承是可以提高代码的复用性,但是使用继承提高代码的复用性会存在着一些问题,\
如何理解?
如何理解合成复用性原则,就是我们在开发的过程中要注意尽量先使用组合或者聚合的方式,如果前两种都不能使用的话最后才考虑使用继承的方式。
常见的场景
通常情况下可以分为继承复用和合成复用(也就是组合和聚合)两种复用方式。
继承复用使用起来是比较简单的,而且比较实现,但是也有一定的缺点,比如以下几点:
1、继承复用它会破坏类的封装性,因为使用继承的话就会将父类中的所有实现细节都暴露给子类,父类对于子类是完全透明的状态,子类可以直接使用这些功能,同时也可以将这些功能覆盖掉。
2、子类和父类高度耦合,父类中任何改变都会影响到子类中,这不利于扩展于维护。
3、限制了复用的灵活性,因为当子类继承父类的实现它是静态的,这就注定了在运行时是无法进行更改的。
合成复用的优点:
1、可以将已有对象纳入新的对象当中,让它成为新对象中的一部分新对象就可以调用已有对象的功能了。
2、它相对了维护了类的封装性。
3、对象之间的耦合性较低,因为在使用的时候可以声明类的成员位置去声明其抽象父类或者父接口,这样我们可以动态的去给他传递该类的子类对象。
4、复用性的灵活性高,可以在运行时动态进行。