程序的耦合和解耦

程序耦合和解耦的讲解

2020.9.21

By ljm

1.什么是耦合

​ 在我们编写程序的时候,通常会用多个功能模块,共同实现我们的功能,这时,各个功能模块间联系的紧密度就可以理解为我们常说的耦合度。例如:内容耦合 、公共耦合等。

2.为什么要解耦

我们常听到,编写程序要做到“高内聚,低耦合”。“高内聚”是要我们在编写程序时,每个功能模块可以专注的完成一个功能。而“低耦合”是指我们在编写程序时,尽量减少模块间的联系。然而,为什么要这样做呢?

​ 在程序设计开发时,我们的理想状态是将每一个功能模块都积木化,即我们可以将功能模块互相组合,从而实现我们的功能。这样做的好处有很多:

  • 1.代码复用率大大提高的,从而提高了实现功能的效率。换句话来说,我们需要再搭一个房子,我们可以直接使用现成的积木而非重新再构造一个搭房子的积木。
  • 2.提高我们程序的维护性。还是用搭房子的例子来说,当我们搭好的房子需要维护时,低耦合的理想状态可以做到撤掉一个积木,换上另一个接口匹配的积木后房子依旧是房子。但如果这些积木是高耦合的(可以理解为积木之间互相有着连线)那么在我们撤掉一块积木时,整个房子有可能面临着坍塌,这样就导致了我们的搭建效率大大降低。

3.如何进行解耦

理解了为什么要解耦,接下来让我们探索如何尽量做到“高内聚,低耦合”。

  • 1.其实在我们程序员社会中,以及有很多人帮助我们尽量简化降低耦合度的步骤了,我们学习的各种框架、设计模式,在帮助我们简便开发的同时,无形之中也让我们的程序实现了低耦合。我们可以认真学习这些框架、设计模式。

  • 2.使用反射来创建对象,避免使用new来创建对象。这个方法在我们使用JDBC时就有所体现了:

    DriverManager.registerDriver(new com.mysql.jdbc.Driver());

    在注册驱动时,上一行代码依赖于一个具体的驱动类,这种依赖于一个具体类的方式耦合度告,不推荐使用。我们通常会使用下面这行代码来实现注册驱动,在这里"com.mysql.jdbc.Driver"仅仅标识一个字符串,耦合度低。

    Class.forName("com.mysql.jdbc.Driver");

  • 3 .设立接口。接口有利于清晰模块间的依赖,使依赖趋于稳定。依赖于一个固定的接口,而非具体的类,从而降低了耦合。

  • 4.避免使用全局变量。全局变量在程序中会无形之中增加不同函数间的耦合,从而降低了程序的耦合度。

  • 5.等待补充——————————————————————————————

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值