低耦合和高内聚

什么是低耦合

低耦合就是元素与元素之间的连接,感知和依赖量度。这里说的元素是功能,对象,系统,子系统,模块。

举例;

现在我们有A方法与B方法:

我们用A元素调用B元素时,当B元素有问题的时候,变更的时候,或者不存在的时候,A元素就不能正常工作

低耦合带来的问题

  • 影响系统的可维护性和易变更性
  • 同时元素A也只能在元素B中运行,这也大大的降低了A元素的可复用性

我们为什么要追求低耦合性:

正是这些弊端我们才需要在软件上追求低耦合性

如何做到低耦合性:

  1. 元素A不能过度的依赖元素B
  2. 合理的职责分化:让系统中的对象各司其职,不仅是提高内聚的要求,同时也可以有效的降低耦合
  3. 使用接口而不是继承:我们不难发现,继承就是一种耦合,假如子类A继承了父类B不论是直接继承或者间接继承,但是只要父类发生变更或者不存在了,那么子类A不得不修改或者重写。
  4. 还有就是代码的冗余性,假如说父类B修改了成千上百次,那么子类A也要跟着修改成千上百次,写的代码太多了

那什么是高内聚呢

高内聚就是另一个评判软件设置质量的标准。

内聚更为专业的叫法叫做功能内聚,是对系统中的元素的相关性和集中度的量度,如果元素有高度的相关职责,除了这些职责在没有其他的工作,那么该元素就有高内聚。

举例

这就好像,如果我是一个项目经理,我的职责是监控和协调我的项目各个阶段的工作。当我的项目进入需求分析阶段,我会请求需求分析员来完成;当我的项目进入开发阶段,我会请求软件开发人员来完成;当我的项目需要测试的时候,我会请求测试人员。。。如果我参与了开发,我就不是一个高内聚的元素,因为开发不是我的职责。总的来说就是各司其职。

为什么要用高内聚

因为:可读性,复用性,可维护性和易变更性。

简单的理解一下高内聚,低耦合

耦合和内聚的评判标准是强度,耦合越弱越好,内聚越强越好

耦合指模块与模块之间的关系

最弱的耦合就是通过一个主控模块来协调N个模块进行运作。

举例:

客户要求在界面上增加一个字段,你的项目要修改几个地方呢?如果你只要修改项目文档,那么你的开发构架就是最低强度的耦合,而这种设计 成熟的开发团队都已经做到了,他们使用开发工具通过项目模型驱动数据库和各层次的代码,而不是直接修改那些代码;

那么内聚指的是什么呢

内聚指的是模块内部的功能,最强的就是功能不能拆分,也就是原子化。

再简单的说: 高内聚、低耦合讲的是程序单位协作的问题, 你可以这样理解,一个企业的管理, 最理想的情况就是各个部门各司其职,井然有序,互不干涉, 但是需要沟通交流的时候呢, 各个部门都可以找到接口人专门负责部门沟通以及对外沟通。 在软件里呢, 就是说各个模块要智能明确, 一个功能尽量由一个模块实现, 同样,一个模块最好只实行一个功能。这个是所谓的“内聚”; 模块与模块之间、系统与系统之间的交互,是不可避免的, 但是我们要尽量减少由于交互引起的单个模块无法独立使用或者无法移植的情况发生, 尽可能多的单独提供接口用于对外操作, 这个就是所谓的“低耦合”。 但是实际的设计开发过程中,总会发生这样那样的问题与情况, 真正做到高内聚、低耦合是很难的,很多时候未必一定要这样, 更多的时候“最适合”的才是最好的, 不过,理解思想,审时度势地使用, 融会贯通,灵活运用,才是设计的王道。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值