java - 松耦合和紧耦合将用作真实场景的地方?

标签 java

我一直在看这篇文章: Difference between loose and tight coupling in Java?

看完之后我还是一头雾水,完全不明白。我是 Java 初学者。

耦合在 Java 中的重要性是什么?为什么?在设计代码时在哪里、如何以及何时需要它?

最佳答案

紧耦合

  • 在复杂的情况下,一个类的逻辑会调用另一个类的逻辑来提供相同的服务

  • 如果发生这种情况,则两个类之间会出现所谓的紧耦合。

  • 在这种情况下,想要从第二个类调用逻辑的第一个类必须从第二个类创建一个对象

示例:我们有两个类,第一个是traveller,第二个是carTraveller类是car类的调用逻辑;在这种情况下,旅行者类创建了汽车类的对象。

这意味着 car 类将依赖于 traveller 对象。

Public class Traveller {
    Car c = new Car();
    Public void startJourney() {
        c.move();
    }
}

Public class Car {
    Public void move(){
        ...
    }
}

此处 traveller 对象与 car 对象紧密耦合
如果 traveller 想要从 car 更改为 plane 那么整个 traveller 类必须像下面这样更改:

Public class Traveller {
    Plane p = new Plane();
    Public void startJourney() {
        p.move();
    }
}

Public class Plane {
    Public void move(){
        ...
    }
}

松耦合

  • 在这种情况下,我们的主要对象 traveller 将允许外部实体,即所谓的 container 提供 object。所以 traveller 不必从 carplane 对象创建自己的类,它将从 container

  • 当对象允许依赖注入(inject)机制时。

  • 外部实体,container可以根据一定的逻辑注入(inject)carplane对象, 旅行者

示例:

Public class Traveller {
    Vehicle v;

    Public void setV(Vehicle v) {
        this.V = V;
    }
    Public void startJourney() {
        V.move();
    }
}

此处 traveller 类注入(inject)了 carplane 对象。如果我们想将依赖项从汽车更改为飞机,则无需在 traveller 类中进行任何更改。

Traveller 类采用车辆引用,因此外部对象(Container)可以注入(inject) car 对象或 plane 对象,具体取决于要求旅行者

关于java - 松耦合和紧耦合将用作真实场景的地方?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19976273/

相关文章:

Java 比较地址

java - 有什么想法可以禁用 hystrix 指示器吗?

java - 一起运行 Pocketsphinx 和 Google TTS

java - Collection.parallelStream() 是否暗示发生在关系之前?

java - 相应渲染器的编辑器,复选框节点树

java - 如何在 selenium 中自动执行 cmd 提示符和 vb 实用程序文件中的命令?

java - Android 菜单布局首页

java - WAR文件的主要方法是什么?

java - java中的枚举和泛型方法

java - Jersey 2 : How to create custom HTTP param binding