JAVA : 关于高内聚与低耦合

高内聚与低耦合的概念说实话,对本人来讲每次提起来老是有些模糊,下午看了一些博主的文章,感受清晰了一些,在此记录一下我的的理解。html

首先感谢几位老哥的文章,以下:算法

https://blog.csdn.net/qq_39521554/article/details/79489180 函数

http://www.javashuo.com/article/p-pphztnps-hq.html工具

https://blog.csdn.net/kingscoming/article/details/78836229.net

 

内聚:htm

每一个模块尽量独立完成本身的功能,不依赖于模块外部的代码。blog

我的理解:接口

关于内聚,本人以为四个字“单一职责”,无论是方法(函数)、类,仍是自定义的组件。get

好比某个类应该只作它自己作的是,也不该该作过多的事情。好比计算模块,该模块应该只是作计算的事情,而不该该与付款模块发生内容耦合或者说直接耦合之类,方法

说实在点就是在计算模块中不该该有付款之类的代码存在,计算就应该只是作计算的事情,反之亦然。

那么计算模块中应该有各类类,好比计算加减法的,计算平方的,计算平方根的(举个例子,可能实际工做中就是一个工具类)

那么计算加减法的类中就只是计算加减法,包括到方法中去,加法就计算加法。若是要实现一个复杂的计算好比要加,而后计算平法,而后再减的逻辑,应该在主模块中进行调用。

最终暴露给其余模块的接口不影响付款,具体算法是什么样的,是计算模块说了算,付款模块并不须要关注。

在主模块中调用计算模块的接口,而后再调用付款模块的接口,那么它们只是有非直接耦合的关系。

 

耦合:

模块与模块之间接口的复杂程度,模块之间联系越复杂耦合度越高,牵一发而动全身。

我的理解:

内聚有耦合有着千丝万缕的关系,若是内聚度较高,那么耦合程度必然会有所下降,反之,内聚度低,耦合度响应的也会出现必定上升,但又不必定是必然的。

好比有一个类同时既有计算又有付款,内聚松散,等于2个功能整合为一个功能。那么能够直接把付款类去掉了。

而后主模块中关于计算付款只要调用这一个类中的函数便可,那么是否是总体的耦合度下降了?可是牺牲的是内聚性。

 

总结:

全部本人感受,若是要达到高内聚,那么在敲代码以前,势必要多花一些时间研究模块的拆分,无论是横向的仍是纵向的,

 

以上大多都是我的理解,欢迎拍砖

相关文章
相关标签/搜索