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個功能整合爲一個功能。那麼能夠直接把付款類去掉了。

而後主模塊中關於計算付款只要調用這一個類中的函數便可,那麼是否是總體的耦合度下降了?可是犧牲的是內聚性。

 

總結:

全部本人感受,若是要達到高內聚,那麼在敲代碼以前,勢必要多花一些時間研究模塊的拆分,無論是橫向的仍是縱向的,

 

以上大多都是我的理解,歡迎拍磚

相關文章
相關標籤/搜索