栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

什么叫耦合

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

什么叫耦合

耦合
    • 一、什么是耦合
    • 二、耦合的例子
    • 三、耦合强的坏处
    • 四、代码例子

一、什么是耦合

  耦合表示模块之间的关联程度,分为强耦合和弱耦合。

二、耦合的例子

  例子1:设想一下有十几个灯泡一同插在灯座上,假如其中有一个灯泡坏掉了,那么需要更换整个灯座设备的话,也就是说十几个灯泡全都要换掉,那么我们称这种情况为强耦合。若其中的一个灯泡坏掉了只需将这个坏掉的灯泡更换掉,那么称这种情况为弱耦合。
  例子2:设想有一个机器人,机器人的眼睛坏掉了,假如需要将整个机器人头部给换掉,那么这种情况称为强耦合。若眼睛坏掉了只需更换眼睛,那么则为弱耦合。

三、耦合强的坏处

  从上面的例子我们可以看出,强耦合的系统或者设备,一旦其中的某个零件或者元件坏掉了,我们就要整个设备一齐更换。如此一来,耗时耗力。

四、代码例子

  假设有A1类、A2类、B类,A1、A2继承于B:

class B {
	public void method() { ... }
}

class A1 extends B {
	...
}
class A2 extends B {
	...
}

  原问题:直接调用
  现在写一个强耦合的情况下的代码。这种直接调用是强耦合的。
  存在问题:如果你的项目中到处都是new A1(),那么当你想要将A1改为A2的时候,你就需要在项目各个角落找到这个语句并作修改,如果你的项目有上百层结构,那么工作量是巨大的。

B b = new A1(); //若将A1() 改为A2(),在上百层级结构的项目中将会很繁琐。
b.mehtod();

  改动一:辅助类
  可以改进为松耦合结构,用一个辅助类,通过辅助类调用。
  存在问题:辅助类仍然紧耦合A1类,若要改成A2类还是需要在辅助类里进行小范围更改(假如辅助类很庞大,改动的地方还是有点多了)。

class B_Helper {
	B b = new A1();
	public void useMethod() { 
		b.method();
	} 
}
B_Helper bHelper = new B_Helper(); //如此一来,若要改动A1(),只需在辅助类这一处改动即可。
bHelper.useMethod();

  通过辅助类我们降低了耦合,我们只需要管理辅助类。在上百层结构的项目中,我们看不到new A1()的语句了,映入眼帘的都是new B_Helper()。如此一来,我们只要改动B_Helper类中的A1类,就可以实现全部的改动。再也不用到处找new A1()啦~
  改动二:spring框架
  转自,这里还不怎么熟悉,先挖个坑,待功力上升后再来填满。

https://www.yiibai.com/spring/spring-loosely-coupled-example.html

  可以将辅助类和spring bean配置文件结合,并在spring bean配置文件中声明所有的Java对象的依赖,然后通过Spring来调用它来实现松耦合。只需要改变 Spring xml 文件使用不同的输出生成器。只修改 Spring xml文件而不需要无码修改,这意味着更少的错误。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/351238.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号