Java中的耦合

在面向对象设计中,耦合指的是一个元素对另一个元素的直接了解程度。换句话说,A类中的变化与B类中的力相关变化的频率如何。 有两种类型的联轴器:

null
  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()方法更改为gotit()方法,则必须更改startReading()方法,该方法将调用gotit()方法,而不是调用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
    

    说明: 在上面的例子中,这两个类之间有很强的相互依赖性。如果盒子类中有任何变化,那么它们会反映在类体积的结果中。

  2. 松耦合: 简单地说,松耦合意味着它们基本上是独立的。如果类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
    

    说明: 在上面的程序中,两个类之间没有依赖关系。如果我们改变了盒子类中的任何内容,那么我们就不必改变体积类中的任何内容。

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

    一般来说,紧耦合在大多数情况下是不好的,因为它降低了代码的灵活性和可重用性,使更改变得更加困难,阻碍了测试能力等。松耦合是一个更好的选择,因为当应用程序需要更改或增长时,松耦合将帮助您。如果使用松散耦合的体系结构进行设计,当需求发生变化时,应用程序中只有少数部分会受到影响。 让我们看看紧耦合和松耦合的图示: Coupling in Java

    紧耦合和松耦合的区别

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

    本文由 比沙尔·库马尔·杜比 .如果你喜欢GeekSforgek,并想贡献自己的力量,你也可以使用 贡献极客。组织 或者把你的文章寄到contribute@geeksforgeeks.org.看到你的文章出现在Geeksforgeks主页上,并帮助其他极客。

    如果您发现任何不正确的地方,或者您想分享有关上述主题的更多信息,请写下评论。

© 版权声明
THE END
喜欢就支持一下吧
点赞13 分享