让你彻底明白什么是高内聚、低耦合?

1.前言

相信平时在开发中(代码重构,或者软件设计过程中),经常会听到要遵循高内聚,低耦合的原则,那么什么时候高内聚,低耦合呢?

2.什么是高内聚?

我们常说的高内聚,一般都是功能内聚,高内聚是指一个软件模块是由相关性很强的代码组成,只负责一项任务,也就是常说的单一责任原则。模块的内聚反映模块内部联系的紧密程度。一个模块只需做好一件事件,不要过分关心其他任务。高内聚性的好处是可以提高程序的可靠性。这个是官方的定义,下面是我的理解:高内聚就是一个模块内各个元素彼此结合的紧密程度高,并且这些元素的各个组成部分全部都为完成同一个功能而存在,共同完成一个单一的功能,什么意思呢?比如有个计算价格的模块(calculate Price),那么这个模块里面的元素都以计算价格紧密相关,不会有什么其他的功能业务(查询价格,修改价格等),职责非常单一,什么是职责单一?(例如:你是个厨师,你做的活应该只负责炒菜,但是招待客人,洗碗拖地,收银这样活你都干,那么这个你的职责就不单一了,你就要想下,是不是要把这些业务都分出去,招待客人是不是应该是服务员的职责,洗碗拖地是不是保洁的职责,收银是不是前台收银员的职责,这样各干各的活,如果有人不干了,我只要换了人过去顶替就可以了,不会影响到其他的功能),并且这些元素共同完成计算价格这个功能,

3.什么是低耦合?

模块与模块之间、系统与系统之间的交互,是不可避免的, 但是我们要尽量减少由于交互引起的单个模块无法独立使用或者无法移植的情况发生, 尽可能多的单独提供接口用于对外操作, 这个就是所谓的“低耦合”,耦合指的是模块之间存在依赖,关系越紧密, 耦合越强, 模块独立性越差,例如:我们平时用的电脑,电脑里面有主板,如果主板要指定的显卡电脑才能运行,那么这个主板和显卡高耦合,日常生活中,我们的电脑主板都会提供一个接口(插槽)给显卡,一般的显卡都可以(除了一些高配显卡,低配主板,带不动),所以主板和显卡是属于低耦合的

4.总结

一个好的系统应该是分成各个小块,分而治之的思想,把复杂问题分成小问题,逐个击破。每个小块应该是高内聚,小块之间应该是低耦合的。高内聚说的是这个小块的功能已经不可分割了,已经足够简单。耦合说的是这个小块依赖其他小块提供的功能,低就是少,弱,高耦合就是多,而且强。

  • 38
    点赞
  • 116
    收藏
    觉得还不错? 一键收藏
  • 9
    评论
Java高内聚低耦合是一种软件设计原则,它意味着在一个系统或模块中,各个组件之间相互依赖度,独立性,可以方便地修改、扩展和重用。下面以一个订单系统为例,说明Java高内聚低耦合的示例。 假设我们有一个订单系统,它包括订单管理、商品管理和用户管理三个模块。高内聚低耦合的设计将按照功能将不同的模块拆分成各个独立的类,每个类只负责自己的职责。比如,订单管理模块的类包括Order、OrderItem和OrderService,商品管理模块的类包括Product和ProductService,用户管理模块的类包括User和UserService。 在这个设计中,各个模块之间尽量减少依赖关系,只通过接口或提供的公共方法进行通信,类之间的调用关系简单清晰。比如,订单管理模块中的OrderService类只依赖于商品管理模块的ProductService接口和用户管理模块的UserService接口,而不依赖具体的实现类。这样,当需要修改或扩展商品管理或用户管理模块时,订单模块不会受到影响,只需要修改相应的接口和实现类即可。 另外,高内聚低耦合的设计也能够提代码的重用性。比如,商品管理和用户管理模块的一些公共方法可以抽象成一个BaseService类,让需要使用这些方法的模块进行继承。这样,不同的模块可以复用相同的代码,避免了重复编写类似的功能。 综上所述,Java高内聚低耦合示例通过模块的拆分和减少依赖关系,实现了系统的灵活性和扩展性,提了代码的重用性。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值