Java 耦合

Java 耦合

在面向对象的设计中,耦合是指一个元素对另一个元素的直接了解程度。换句话说,A类的变化多久会迫使B类发生相关变化。
1. 紧耦合:一般来说,紧耦合意味着两个类经常一起变化。换句话说,如果A比它应该知道的更多关于B的实现方式,那么A和B就是紧密耦合的。
例子:如果你想改变皮肤,你也必须同时改变身体的设计,因为这两者是连在一起的–它们是紧耦合的。紧耦合的最好例子是RMI(远程方法调用)。有两种类型的耦合

// Java program to illustrate
// tight coupling concept
class Subject {
    Topic t = new Topic();
    public void startReading()
    {
        t.understand();
    }
}
class Topic {
    public void understand()
    {
        System.out.println("Tight coupling concept");
    }
}

解释:在上述程序中,主题类是依赖于主题类的。在上面的程序中,主体类与主题类是紧密耦合的,这意味着如果主题类的任何变化都需要主体类来改变。例如,如果主题类的understand()方法改为getit()方法,那么你就必须改变startReading()方法,调用getit()方法,而不是调用understand()方法。

// Java program to illustrate
// tight coupling concept
class Volume 
{
     public static void main(String args[]) 
     {
         Box b = new Box(5,5,5);
         System.out.println(b.volume);
     }
}
class Box 
{
     public int volume;
     Box(int length, int width, int height) 
     {
         this.volume = length * width * height;
     }
}

输出:

125

解释:在上面的例子中,两个类之间有很强的相互依赖关系。如果盒子类有任何变化,它们就会反映在类卷的结果中。

  1. 松散耦合:简单地说,松散耦合意味着它们大部分是独立的。如果A类对B类的唯一了解是B类通过其接口暴露出来的,那么A类和B类就被称为松散耦合。为了克服对象之间的紧耦合问题,spring框架在POJO/POJI模型的帮助下使用了依赖注入机制,通过依赖注入,可以实现松耦合。
    例子:如果你改变了你的衬衫,那么你不会被迫改变你的身体–当你可以这样做的时候,你就有了松散耦合。当你不能这样做的时候,你就有了紧耦合。松散耦合的例子是接口、JMS。
// Java program to illustrate 
// loose coupling concept
public interface Topic
{
    void understand();
}
class Topic1 implements Topic {
public void understand()
    {
        System.out.println("Got it");
    }
} class Topic2 implements Topic {
public void understand()
    {
        System.out.println("understand");
    }
} public class Subject {
public static void main(String[] args)
    {
        Topic t = new Topic1();
        t.understand();
    }
}

解释:在上面的例子中,Topic1和Topic2对象是松散耦合的。这意味着Topic是一个接口,我们可以在运行时注入任何一个实现的类,我们可以向终端用户提供服务。

// Java program to illustrate
// loose coupling concept
class Volume 
{
     public static void main(String args[]) 
     {
         Box b = new Box(5,5,5);
         System.out.println(b.getVolume());
     }
}
final class Box 
{
     private int volume;
     Box(int length, int width, int height) 
     {
         this.volume = length * width * height;
     }
     public int getVolume() 
     { 
         return volume; 
           
     }
}

输出:

125

解释:在上述程序中,两个类之间没有依赖关系。如果我们改变了Box类中的任何东西,那么我们就不必改变Volume类中的任何东西。

**紧耦合和松耦合哪一个更好?

一般来说,紧耦合在大多数情况下是不好的,因为它降低了代码的灵活性和可重用性,它使改变变得更加困难,它阻碍了测试能力等等。如果你用松散耦合的架构设计,当需求发生变化时,只有应用程序的少数部分会受到影响。

让我们来看看紧耦合和松耦合的图解:

Java中的耦合

紧耦合和松耦合的区别

  • 严密耦合在测试能力方面并不出色。但松散耦合提高了测试能力。
  • 紧密耦合没有提供接口的概念。但松散耦合帮助我们遵循GOF原则,即程序与接口,而不是实现。
  • 在紧耦合中,在两个类之间交换代码是不容易的。但在松耦合中,交换其他的代码/模块/对象/组件要容易得多。
  • 紧密耦合不具备改变的能力。但松散耦合是高度可改变的。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程