Java中的耦合

耦合是指另一个对象对一个对象的使用。也可以称为协作。一个对象与另一个对象之间的依赖关系可以完成一些任务,可以分为以下两种类型:

  • 紧密耦合 -当对象创建要使用的对象时,则为紧密耦合情况。由于主要对象创建了对象本身,因此无法从外部将其更改为易于将其标记为紧密耦合的对象。

  • 松散耦合 -当对象从外部获取要使用的对象时,则为松散耦合情况。由于主要对象仅是使用对象,因此可以从外部轻松更改该对象,将其标记为松散耦合的对象。

示例-紧耦合

测试器

 

public class Tester {
   public static void main(String args[]) {
      A a = new A();

      //a.display()将打印A和B-
      //此实现不能动态更改
      //紧密耦合
      a.display();
   }
}

class A {
   B b;
   public A() {
      //b与A紧密耦合
      b = new B();
   }

   public void display() {
      System.out.println("A");
      b.display();
   }
}

class B {    
   public B(){}
   public void display() {
      System.out.println("B");
   }
}

这将产生以下结果-

输出结果

A
B

示例-松耦合

测试器

import java.io.IOException;

public class Tester {
   public static void main(String args[]) throws IOException {
      Show b = new B();
      Show c = new C();

      A a = new A(b);          
      //a.display()将打印A和B-    
      a.display();

      A a1 = new A(c);
      //a.display()将打印A和C-    
      a1.display();
   }
}

interface Show {
   public void display();
}

class A {
   Show s;
   public A(Show s) {
      //s与A松散耦合
      this.s = s;
   }

   public void display() {
      System.out.println("A");
      s.display();
   }
}

class B implements Show {    
   public B(){}
   public void display() {
      System.out.println("B");
   }
}

class C implements Show {    
   public C(){}
   public void display() {
      System.out.println("C");
   }
}

这将产生以下结果-

输出结果

A
B
A
C

使用接口,我们通过注入依赖关系来实现松散耦合。