Java中的松耦合与紧耦合:松耦合和紧耦合之间的区别
已发表: 2021-05-02目录
介绍
Java 是一种使用类和对象的面向对象的编程语言。 如果您使用 Java 语言中的类和对象,则耦合在 Java 中起着至关重要的作用。 耦合是指 Java 中一个元素对另一个元素的了解程度。 它是一个类被另一个类使用的程度。 本文将通过示例让您深入了解Java中的耦合及其类型。
Java中的耦合是什么?
耦合只不过是一个类对另一个类的依赖。 如果代码中的一个对象使用程序中的另一个对象,则在 Java 中称为松散耦合。 在耦合中,两个类或对象相互协作并协同工作以完成预定义的任务。 它只是意味着一个元素需要另一个元素来完成一个功能。 当一个类调用另一个类的逻辑时,称为协作。
联轴器有哪些类型?
Java 中的耦合有两种类型。
Java 中的松散耦合
当两个类、模块或组件相互依赖程度较低时,在 Java 中称为松散耦合。 Java 中的松散耦合意味着类是相互独立的。 一个类对另一个类的唯一了解是另一个类通过松散耦合的接口公开的内容。 如果一种情况需要从外部使用对象,则称为松散耦合情况。
在这里,父对象很少使用对象,并且可以很容易地从外部源更改对象。 Java中的松散耦合比紧耦合具有优势,因为它减少了代码维护和工作量。 一个类的变化不需要另一个类的变化,两个类可以独立工作。
示例 1:假设您在程序中创建了两个类 A 和 B。 A类称为体积,B类评估圆柱体的体积。 如果您更改 A 类卷,那么您不会被迫更改 B 类。这在 Java 中称为松散耦合。 当 A 类需要 B 类中的更改时,您将具有紧密耦合。
代码
封装松耦合; 类卷{ 公共静态无效主要(字符串参数[]){ 气缸 b = 新气缸 (25, 25, 25); System.out.println(b.getVolume()); } } 最后一类气缸{ 私人 int 卷; 圆柱体(整数长度,整数宽度,整数高度){ this.volume = 长 * 宽 * 高; } 公共 int getVolume() { 返回量; } } |
解释:在上面的例子中,A 类和 B 类是松耦合的。
示例 2
导入 java.io.IOException; 界面食物{ 公共无效显示(); } 意大利语类{ 食品; 公共意大利语(食品){ 这.s = s; } 公共无效显示(){ System.out.println(“意大利语”); s.display(); } } 中文类实现食品{ 公共中文(){} 公共无效显示(){ System.out.println(“中文”); } } 类墨西哥实施食品{ 公共墨西哥(){} 公共无效显示(){ System.out.println(“墨西哥”); } } 公共类测试{ 公共静态 void main(String args[]) 抛出 IOException { 食物 b = new Chinese(); 食物 c = new Mexican(); 意大利语 a = 新意大利语(b); //a.display() 将打印意大利语和中文 a.显示(); 意大利语 a1 = 新意大利语(c); //a.display() 将打印意大利语和墨西哥语 a1.display(); } } |
输出
意大利语 中国人 意大利语 墨西哥人 |
解释:在上面的例子中,所有三个类都是松耦合的。 它只是意味着您可以使用 food 接口通过注入任何已实现的服务来提供服务。
从世界顶级大学在线获得软件工程学位。 获得行政 PG 课程、高级证书课程或硕士课程,以加快您的职业生涯。
紧耦合
当两个类相互高度依赖时,称为紧耦合。 当一个类承担太多责任或一个类的更改需要另一个类的更改时,就会发生这种情况。 在紧密耦合中,一个对象(父对象)创建另一个对象(子对象)供其使用。 如果父对象更了解子对象是如何实现的,我们可以说父对象和子对象是紧密耦合的。
示例:假设您在程序中创建了两个类 A 和 B。 A类称为体积,B类评估圆柱体的体积。 如果您对卷进行任何更改,那么相同的更改将反映在 B 类中。因此,我们可以说这两个类相互高度依赖并且紧密耦合。
代码
封装紧耦合; 类卷{ 公共静态无效主要(字符串参数[]){ 气缸 b = 新气缸 (15, 15, 15); System.out.println(b.volume); }} 类气缸{ 公共 int 卷; 圆柱体(整数长度,整数宽度,整数高度){ this.volume = 长 * 宽 * 高; }} |
输出
3375 |
解释:在上面的例子中,A 类和 B 类绑定在一起,作为一个团队相互协作。
松耦合和紧耦合之间的差异
下表列出了松耦合和紧耦合之间的区别。
松耦合 | 紧耦合 |
对象是相互独立的。 | 一个对象依赖于另一个对象来完成一项任务。 |
更好的可测试性 | 可测试性不如Java 中的松散耦合。 |
异步通信 | 同步通信 |
少协调。 在两个类之间交换代码并不容易。 | 提供更好的协调。 您可以轻松地在两个对象之间交换代码。 |
没有接口的概念 | 遵循 GOF 原则进行接口 |
信息流少 | 更多信息流 |
多变 | 它不具备更改能力。 |
结论
简而言之,与紧耦合相比,Java中的松散耦合要好得多。 它提供了更好的代码灵活性和可重用性。 由于这两个类相互独立,因此代码的更改非常容易。 它还提供了更好的可测试性。
如果您有兴趣了解有关软件开发的更多信息,请查看 LJMU 的计算机科学理学硕士课程,该硕士课程专为在职专业人士设计,并提供 12 多个项目和作业、与行业导师一对一、500 多个小时的学习。