在面向对象设计中,耦合指的是一个元素对另一个元素的直接了解程度。换句话说,A类中的变化与B类中的力相关变化的频率如何。 有两种类型的联轴器:
- 紧密耦合: 一般来说,紧密耦合意味着这两个类经常一起改变。换句话说,如果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
说明: 在上面的例子中,这两个类之间有很强的相互依赖性。如果盒子类中有任何变化,那么它们会反映在类体积的结果中。
- 松耦合: 简单地说,松耦合意味着它们基本上是独立的。如果类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
说明: 在上面的程序中,两个类之间没有依赖关系。如果我们改变了盒子类中的任何内容,那么我们就不必改变体积类中的任何内容。
紧耦合和松耦合哪个更好?
一般来说,紧耦合在大多数情况下是不好的,因为它降低了代码的灵活性和可重用性,使更改变得更加困难,阻碍了测试能力等。松耦合是一个更好的选择,因为当应用程序需要更改或增长时,松耦合将帮助您。如果使用松散耦合的体系结构进行设计,当需求发生变化时,应用程序中只有少数部分会受到影响。 让我们看看紧耦合和松耦合的图示:
紧耦合和松耦合的区别
- 紧耦合不具备良好的测试能力。但松耦合提高了测试能力。
- 紧密耦合不提供接口的概念。但松耦合有助于我们遵循程序到接口的GOF原则,而不是实现。
- 在紧密耦合中,在两个类之间交换代码并不容易。但在松散耦合中交换其他代码/模块/对象/组件要容易得多。
- 紧耦合不具有变化能力。但松耦合是高度可变的。
本文由 比沙尔·库马尔·杜比 .如果你喜欢GeekSforgek,并想贡献自己的力量,你也可以使用 贡献极客。组织 或者把你的文章寄到contribute@geeksforgeeks.org.看到你的文章出现在Geeksforgeks主页上,并帮助其他极客。
如果您发现任何不正确的地方,或者您想分享有关上述主题的更多信息,请写下评论。