我已经提到了这个链接, Difference between loose and tight coupling in Java?
在我提到这个之后,我仍然感到困惑,根本不理解。
作为Java初学者,我无法轻易理解它。请有人建议一个更好的例子吗?
任何人都可以说我,在设计代码时,在java中耦合的重要性以及为什么,在哪里,如何以及何时需要它?
答案 0 :(得分:27)
在复杂的情况下,一个类的逻辑将调用另一个类的逻辑只是为了提供相同的服务
如果发生这种情况,两个类之间就会出现所谓的紧耦合。
在这种情况下,想要从第二个类调用逻辑的第一个类必须从第二个类创建一个对象
示例:我们首先有两个类traveller
,第二个类是car
。 Traveller
类调用car
类的逻辑;在这种情况下,旅行者类会创建一个汽车类对象。
这意味着car
课程将取决于traveller
对象。
Public class Traveller {
Car c = new Car();
Public void startJourney() {
c.move();
}
}
Public class Car {
Public void move(){
...
}
}
此处traveller
对象与<{1}}对象紧密耦合
如果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
或car
对象创建自己的类,而是从plane
当对象允许依赖注入机制时。
外部实体container
可以根据某个逻辑注入container
或car
个对象,这是plane
的要求。
示例:强>
traveller
此处Public class Traveller {
Vehicle v;
Public void setV(Vehicle v) {
this.V = V;
}
Public void startJourney() {
V.move();
}
}
类会注入traveller
或car
个对象。如果我们想要将依赖项从汽车更改为飞机,则plane
类不需要进行任何更改。
traveller
类接受了车辆引用,因此外部对象(Container)可以注入Traveller
对象或car
对象,取决于plane
的要求。
答案 1 :(得分:6)
<强>紧密耦合的: - 强>
在java中创建复杂的应用程序时,一个类的逻辑将调用另一个类的逻辑来为客户端提供相同的服务。
如果一个类调用另一个类逻辑,那么它被称为协作。
当一个班级与另一个班级合作时,两个班级之间存在紧密耦合。
如果一个类想要调用第二个类的逻辑,那么第一个类需要第二个类的对象,这意味着第一个类创建第二个类的对象。
例如,如果我们有两个叫做旅行者和汽车的类,旅行者类就是调用汽车类的逻辑;在这种情况下,旅行者类创建了汽车类的对象。
在上述旅行者类和汽车类中,旅行者对象依赖的汽车类对象。
示例: - 强>
示例: -
<强>松耦合: - 强>
在Loose-Coupling中,当一个对象依赖于另一个类对象时,某个外部实体会将该依赖对象提供给我们称为Container的外部对象的主对象。
为了在对象之间获得松散耦合,需要以下两个规则
课程应遵循POJI / POJO模式。
应用依赖注入机制。
例如: -
在上述旅行者类中,外部实体注入任一车辆 (或)自行车对象。
在旅行者中,这些都没有变化,我们正在改变 从汽车到自行车的依赖。
在上面的旅行者课程中,我们是令牌车辆参考,所以 外部对象(Container)可以注入汽车对象(或) 自行车对象,取决于旅行者的要求。
在弹簧框架工作中,弹簧容器遵循依赖注入 机制并注入main所需的依赖项对象 对象
由于其中一个主要原因,Spring框架工作取得了很大成功 是否促进了对象之间的松散耦合。