首页 > 编程知识 正文

java耦合是什么意思,耦合Java

时间:2023-05-03 09:43:20 阅读:209358 作者:3386

我对java中的松散耦合和紧密耦合有一些困惑。因为我知道松散耦合意味着彼此之间的信息最少,而紧密耦合意味着依赖关系。因为我们知道松散耦合可以通过接口实现和继承实现紧密耦合。

例如:

1)A(接口)

2)C(班级)

假设这四个类是我整个应用程序的一部分,对B或D进行更改不会对应用程序产生任何影响(从运行角度来看)。从A或C中删除任何方法或变量都需要对应用程序进行大量更改。好的分数是2-2,但是在C或A中添加新方法是不同的。如果我在C中添加新方法不会影响应用程序,但在A中添加,至少我必须在B和实现接口A的所有类中覆盖此方法,因此至少在这种情况下它是松散耦合的。

我的疑问是,继承是否总是紧密耦合。我了解到继承是OOP的强大工具之一。用于设计类是否遵循"是一种关系",然后使用继承。

松散耦合意味着彼此之间的信息较少。 A和C都不知道将来要实现或扩展哪个类,但是在添加B和D之后,B不再依赖于A,因为所有方法都是抽象的,但是D也可以覆盖继承的功能。

面向对象范式中的松散耦合和紧密耦合之间有什么区别的可能重复项?

另外:什么是"松耦合"?

您的图表表示" B实现了A"而" D扩展了C"?

应当注意,"松"和"紧"是相对术语。 它不是一个或另一个,而是在极端之间的大量灰色区域。

as we know loose coupling can achieve through interface implementation and inheritance make tight couple.

我想你错了。"耦合"通常是大约2个不同的类,这些类通过其具体类或仅通过某个接口相互了解。

假设2个类A和B需要相互通信。

A B

A中的方法将具有一些参数B,而B中的方法将具有类型A的参数。喜欢

class A {

public void talkTo(B b) {}

}

现在,这是A和B之间的紧密耦合,因为您对这些类所做的每次更改都可以使其他类有必要进行更改。

如果您松散耦合,则它们都会通过某个界面公开。 ("接口"也可能意味着抽象类-这是选择方面。)

IA  

^     |

  /

X           < loose coupling between the A side and the B side

/  

v     |

IB  

它们之间的通信通过这些接口进行

class A implements IA {

public void talkTo(IB b);

}

class B implements IB {

public void talkTo(IA a);

}

A和IA之间的依赖性(这似乎就是您所要看的)与紧密耦合和松散耦合无关。有一些相似之处,但是松散耦合并不意味着您应该实现接口而不是扩展抽象类。通常,最好只实现一个接口。

如果可以将" IS A"关系替换为" HAS A"关系,那么您基本上会执行相同的操作。您可以将自己(例如您是A)与具体实现分离开来,只需要依赖封装的另一端(例如从B端)即可。继承确实是一个非常强大的功能,但是它经常被滥用。

感谢您的出色解释并消除我的疑惑...

简短介绍松紧耦合

松散耦合意味着减少直接使用其他类的类的依赖关系。在紧密耦合中,类和对象相互依赖。通常,紧密耦合通常是不好的,因为它降低了代码的灵活性和可重用性,并且使更改变得更加困难并阻碍了可测试性等。

紧耦合

紧密耦合对象是一个需要非常了解其他对象的对象,并且通常高度依赖于彼此的接口。在紧密耦合的应用程序中更改一个对象通常需要更改许多其他对象。在小型应用程序中,我们可以轻松识别更改,并且错过任何内容的机会都更少。但是在大型应用程序中,这些相互依赖关系并非总是每个程序员都知道,否则就有可能忽略更改。但是每组松散耦合的对象都不相互依赖。

继承并不总是提供紧密的耦合-因为要继承的类提供了一种定义的方式,可以通过该方式将其声明为私有,受保护和公共的方法。

一个很好的例子就是各种API提供的许多抽象类,这些API为您实现了接口的某些样板功能,并允许您专注于自己的需求。

基本示例包括swing的" adaptor"类,该类提供接口中所有方法的" no-op"实现。实际上,更高级的示例提供了一些接口要求的标准实现。

确切地说,紧密耦合实际上是一个判断调用,其中许多事物显然是紧密耦合的,而其他事物显然是松散耦合的,然后是它们之间的大灰色区域。

涉及三个方面或层...实现方面的关注,对象创建方面的关注和使用方面的关注。当我们对不面向实现的接口进行编程时,我们可以实现松散耦合..意味着实现层中的任何更改对对象的影响最小创作层............

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。