合成复用原则

415 阅读2分钟

1. 介绍

尽量使用合成和聚合的方式,不使用继承

2. 案例说明

现在有一个A类和一个B类,B类需要用到A类中的方法。那么有很多种办法能够完成这个功能

  1. B类继承A类
  2. B类将A类对象作为一个方法的参数
  3. B类将A类对象作为一个成员变量

我们逐一来分析这三种方式。

2.1 继承

如果是通过继承来完成这个目的,那么会出现B类和A类过分耦合的情况。考虑如果A类增加了一个新的发方法,但是这个方法B类是不用的,但是B类由于继承也有了这个方法,这样看来就很多余,将B类和A类完全绑定在了一起,增大了耦合度

2.2 参数

B类需要使用到A类的时候,就使用A类对象作为一个参数,这样看来不仅能够减小耦合度,还随用随调,很方便。 使用A类对象作为方法参数的这种方式叫做依赖

2.3 成员变量

如果有多处地方需要使用到A类的方法,不妨将A类对象内置成一个对象,这样的方式叫做聚合/组合

2.4 小结

通过上面的例子,能够看到继承会将两个类的关联度增大,那么就会增加耦合度。为了解耦,应该尽量避免继承

3. 设计原则的核心思想

  1. 找出应用中可能需要变化之处,将他们独立出来,不要和那些不需要变化的代码混在一起
  2. 针对接口编程,而不是针对实现编程
  3. 为了交互对象之间的松耦合设计而努力!!