在项目的开发过程中,我们经常强调项目的代码模块尽量做到低耦合高内聚,但是什么是耦合?怎样做到低耦合?

01-什么是耦合?

耦合指的就是两个类之间的联系的紧密程度,
看下面这段代码:

  1. public class A
  2. {
  3. public int i;
  4. }
  5. public class B
  6. {
  7. public void put(A a)
  8. {
  9. System.out.println(a.i);
  10. }
  11. }

上面这个例子中A类和B类之间存在一种强耦合关系,B类的put方法参数必须是A类类型,不可以是非A类类型。有强耦合关系当然也存在所谓的弱耦合关系,
请看下面这段代码:

  1. //【基类】
  2. public class BaseClass
  3. {
  4. public virtual void say()
  5. {
  6. Debug.Log("I am Base");
  7. }
  8. }
  9. public class A : BaseClass
  10. {
  11. public override void say()
  12. {
  13. Debug.Log("I am A");
  14. }
  15. }
  16. public class B : BaseClass
  17. {
  18. public override void say()
  19. {
  20. Debug.Log("I am B");
  21. }
  22. }
  23. public class Main
  24. {
  25. public void put(BaseClass baseOb)
  26. {
  27. baseOb.say();
  28. }
  29. }

上面这段代码中Main类与A类、B类之间就存在一种弱耦合关系,Main类的put方法的参数可以使A类类型也可以是B类类型,不像强耦合关系中必须是A类类型其他类型皆不可的情形。

02-怎么实现低耦合

实现低耦合就是对两类之间进行解耦,解除类之间的直接关系,将直接关系转换成间接关系,下面来提供两种解耦思路进行解耦,解除类之间的直接关系,将直接关系转换成间接关系,下面来提供两种解耦思路。

02.01 多态性

使用继承,使用类的向上转型或接口回调的方式进行解耦 这两个方式其实都是一种思想,都是利用多态的思想,上面的弱耦合样例代码是接口回调的方式。

02.02 适配器模式TODO