高内聚低耦合设计原则

高内聚低耦合

高内聚低耦合是模块设计的基本原则。模块设计就像四世同堂居家过日子,妯娌婆媳吃大锅饭、柴米油盐不分你我很容易伤和气;如果亲兄弟明算账,每顿饭都AA又太显得生分,不利于和谐,因此把握好一个度很关键。一个系统是由不同模块构成的有机统一体,系统的外在功能是由系统内部各个模块之间相互协作、相互关联实现的。我们在划分模块时,如果各个模块纠缠在一块,结构混乱、层次不清晰,就不利于管理和维护;如果模块过于独立,模块间的相互关联和交互少了,就像肉架子上的一块块肉一样,无法构成一个相互关联的有机系统,充其量也只能算一个库。

模块的耦合度和内聚度是考核模块设计是否合理的参考标准。模块的内聚度指模块内各元素的关联、交互程度。从功能角度上看,就是各个模块在实现各自功能的时候,要自己的事自己做,自己的功能自己实现,尽量不麻烦其他模块。一个模块要想实现高内聚,首先模块的功能要尽可能单一,一个功能由一个模块实现,这样才能体现模块的独立性,进而实现高内聚。在模块实现过程中,遵循着“自己动手,丰衣足食”的基本原则,要尽量调用本模块实现的函数,减少对外部函数的依赖,这样可以进一步提高模块的独立性,提高模块的内聚度。

与模块内聚对应的是模块耦合。模块耦合指的是模块间的关联和依赖,包括调用关系、控制关系、数据传递等。模块间的关联越强,其耦合度就越高,模块的独立性就越差,其内聚度也就随之越低。不同模块之间有不同的关联方式,也有不同的耦合方式。

● 非直接耦合:两个模块之间没有直接联系。

● 数据耦合:通过参数来交换数据。

● 标记耦合:通过参数传递记录信息。

● 控制耦合:通过标志、开关、名字等,控制另一个模块。

● 外部耦合:所有模块访问同一个全局变量。

我们在设计模块时,要尽量降低模块的耦合度。低耦合有很多好处,如可以让系统的结构层次更加清晰,升级维护起来更加方便。在C语言程序中,我们可以通过下面的常用方法降低模块的耦合度。

● 接口设计:隐藏不必要的接口和内部数据类型,模块引出的API封装在头文件中,其余函数使用static修饰。

● 全局变量:尽量少使用,可改为通过API访问以减少外部耦合。

● 模块设计:尽可能独立存在,功能单一明确,接口少而简单。

● 模块依赖:模块之间最好全是单向调用,上下依赖,禁止相互调用。

总之,模块的高内聚和低耦合并不是一分为二的,而是辩证统一的:高内聚导致低耦合,低耦合意味着高内聚。简单理解就是:模块划分要清晰,接口要明确,有明确的输入和输出,模块间的耦合性小。在实际编程中,只有坚持这些原则,不断地对自己的代码进行重构和迭代,才能设计出更高质量的代码,迭代出更易管理和维护的系统架构。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

DingUXiu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值