理解高內聚低耦合

低耦合:

耦合就是元素與元素之間的鏈接,感知和依賴量度。這裏說的元素便是功能,對象,系統,子系統。模塊。數據庫

例如:如今有方法A和方法B工具

咱們在A元素去調用B元素,當B元素有問題或者不存在的時候,A元素就不能正常的工做,那麼就說元素A和元素B耦合開發工具

耦合帶來的問題:

當元素B變動或者不存在時,都將影響元素A的正常運做,影響系統的可維護性和易變動性。同時元素A只能運行在元素B中,這也大大的下降了A元素的可複用性。正由於耦合的種種弊端,咱們才須要在軟件設計上追求低耦合測試

低耦合如何作:

元素A不能過分依賴元素B設計

合理的職責劃分:讓系統中的對象各司其職,不只是提升內聚的要求,同時也能夠有效地下降耦合對象

使用接口而不是繼承:咱們不難發現。繼承就是一種耦合,假如子類A繼承了父類B,不管是直接繼承或者間接繼承,一但父類B不存在或者發生任何變動,都將致使子類A不得不修改或者重寫。假如父類B的子類數十上百的,這就是災難性的變動。繼承

高內聚:

高內聚是另一個評判軟件設計質量的標準。內聚更爲專業的說法叫作功能內聚,是對系統中元素職責的相關性和集中度的量度。若是元素有高度的相關職責,除了這些職責在沒有其餘的工做,那麼該元素就有高內聚。接口

例如:開發

這就好像,若是我是一個項目經理,個人職責是監控和協調個人項目各個階段的工做。當個人項目進入需求分析階段,我會請求需求分析員來完成;當個人項目進入開發階段,我會請求軟件開發人員來完成;當個人項目須要測試的時候,我會請求測試人員。。。。。。若是我參與了開發,我就不是一個高內聚的元素,由於開發不是個人職責。文檔

爲何要高內聚:

可讀性

複用性

可維護性和易變動性

簡單的理解高內聚低耦合:

耦合和內聚的的評判標準是強度,耦合越弱越好,內聚越強越好

耦合指模塊與模塊之間的關係,最弱的耦合就是經過一個主控模快來協調n哥模塊進行運做。例如:。仍是舉一個我舉過的例子:客戶要求在界面上增長一個字段,你的項目要修改幾個地方呢?若是你只要修改項目文檔,那麼你的開發構架就是最低強度的耦合,而這種設計 成熟的開發團隊都已經作到了,他們使用開發工具經過項目模型驅動數據庫和各層次的代碼,而不是直接修改那些代碼;

內聚指的是模塊內部的功能,最強的就是功能不能拆分,也就是原子化。

 

在簡單的說:

 高內聚、低耦合講的是程序單位協做的問題,  你能夠這樣理解,一個企業的管理,  最理想的狀況就是各個部門各司其職,井井有理,互不干涉,  可是須要溝通交流的時候呢,  各個部門均可以找到接口人專門負責部門溝通以及對外溝通。 在軟件裏呢, 就是說各個模塊要智能明確, 一個功能儘可能由一個模塊實現,  一樣,一個模塊最好只實行一個功能。這個是所謂的「內聚」;  模塊與模塊之間、系統與系統之間的交互,是不可避免的, 可是咱們要儘可能減小因爲交互引發的單個模塊沒法獨立使用或者沒法移植的狀況發生,  儘量多的單獨提供接口用於對外操做, 這個就是所謂的「低耦合」。 可是實際的設計開發過程當中,總會發生這樣那樣的問題與狀況, 真正作到高內聚、低耦合是很難的,不少時候未必必定要這樣, 更多的時候「最適合」的纔是最好的, 不過,理解思想,審時度勢地使用, 融會貫通,靈活運用,纔是設計的王道。

 

 

/*

author:咔咔

time:2018.9.13

content:低耦合高內聚

*/

相關文章
相關標籤/搜索