ls松散耦合可以通过任何其他方式实现,而不是使用父类引用变量,一般不具体在我的代码中?

时间:2015-05-13 11:38:56

标签: java loose-coupling tightly-coupled-code

  

紧密耦合是指一组类高度依赖彼此。

class C {
    A a;

    C(B b) {
      a = b;
    }
}

Interface A {
}

class B implements A {
}

在我的代码中,我通过类B的引用而不是父接口A接受类的对象。

  1. 我的代码是松散还是紧密耦合?

      

    通过促进设计实现松耦合   单一责任和分离关注点。

  2. 使用父类或接口的引用使代码更灵活地采用任何子类的对象,但它如何促进单一责任。

  3. 松散耦合是否可以通过任何其他方式实现,而不是使用父类引用变量,在任何情况下都不是特定于我的代码?

2 个答案:

答案 0 :(得分:5)

这感觉像家一样,但这是我的答案。

代码紧密耦合,因为C的构造函数取决于B而不是接口A。如果您想将CB分开,则可以接受A而非B的实例。

松散耦合代码

class C {
    A a;

    C(A a) {
      this.a = a;
    }
}

答案 1 :(得分:1)

<强> ANS1:

  

紧密耦合是指一组类高度依赖彼此。

您的代码紧密耦合,因为:

因为C的构造函数依赖于B,并且您将B的对象存储在类型A中。

<强> ANS2:

  

通过促进单一责任和关注点分离的设计实现松耦合。

接口是用于解耦的强大工具。类可以通过接口而不是其他具体类进行通信,只需通过实现接口,任何类都可以在该通信的另一端进行通信。

示例:

class C {
    A a;

    C(A b) { // use interface A rather Class B
      a = b;
    }
}