JAVA : 關於高內聚與低耦合


高內聚與低耦合的概念說實話,對本人來說每次提起來總是有些模糊,下午看了一些博主的文章,感覺清晰了一些,在此記錄一下個人的理解。

首先感謝幾位老哥的文章,如下:

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

https://www.cnblogs.com/corvoh/p/5747856.html

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

 

內聚:

每個模塊盡可能獨立完成自己的功能,不依賴於模塊外部的代碼。

個人理解:

關於內聚,本人覺得四個字“單一職責”,不管是方法(函數)、類,還是自定義的組件。

比如某個類應該只做它本身做的是,也不應該做過多的事情。比如計算模塊,該模塊應該只是做計算的事情,而不應該與付款模塊發生內容耦合或者說直接耦合之類,

說實在點就是在計算模塊中不應該有付款之類的代碼存在,計算就應該只是做計算的事情,反之亦然。

那么計算模塊中應該有各種類,比如計算加減法的,計算平方的,計算平方根的(舉個例子,可能實際工作中就是一個工具類)

那么計算加減法的類中就只是計算加減法,包括到方法中去,加法就計算加法。如果要實現一個復雜的計算比如要加,然后計算平法,然后再減的邏輯,應該在主模塊中進行調用。

最終暴露給其他模塊的接口不影響付款,具體算法是什么樣的,是計算模塊說了算,付款模塊並不需要關注。

在主模塊中調用計算模塊的接口,然后再調用付款模塊的接口,那么它們只是有非直接耦合的關系。

 

耦合:

模塊與模塊之間接口的復雜程度,模塊之間聯系越復雜耦合度越高,牽一發而動全身。

個人理解:

內聚有耦合有着千絲萬縷的關系,如果內聚度較高,那么耦合程度必然會有所降低,反之,內聚度低,耦合度響應的也會出現一定上升,但又不一定是必然的。

比如有一個類同時既有計算又有付款,內聚松散,等於2個功能整合為一個功能。那么可以直接把付款類去掉了。

然后主模塊中關於計算付款只要調用這一個類中的函數即可,那么是不是整體的耦合度降低了?但是犧牲的是內聚性。

 

總結:

所有本人感覺,如果要達到高內聚,那么在敲代碼之前,勢必要多花一些時間研究模塊的拆分,不管是橫向的還是縱向的,

 

以上大多都是個人理解,歡迎拍磚

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM