文章目錄
-
-
- 1.前言
- 2.什麼是高内聚?
- 3.什麼是低耦合?
- 4.總結
-
1.前言
相信平時在開發中(代碼重構,或者軟體設計過程中),經常會聽到要遵循高内聚,低耦合的原則,那麼什麼時候高内聚,低耦合呢?
2.什麼是高内聚?
我們常說的高内聚,一般都是功能内聚,高内聚是指一個軟體子產品是由相關性很強的代碼組成,隻負責一項任務,也就是常說的單一責任原則。子產品的内聚反映子產品内部聯系的緊密程度。一個子產品隻需做好一件事件,不要過分關心其他任務。高内聚性的好處是可以提高程式的可靠性。這個是官方的定義,下面是我的了解:
高内聚就是一個子產品内各個元素彼此結合的緊密程度高,并且這些元素的各個組成部分全部都為完成同一個功能而存在,共同完成一個單一的功能,什麼意思呢?比如有個計算價格的子產品(calculate Price),那麼這個子產品裡面的元素都以計算價格緊密相關,不會有什麼其他的功能業務(查詢價格,修改價格等),職責非常單一,什麼是職責單一?(例如:你是個廚師,你做的活應該隻負責炒菜,但是招待客人,洗碗拖地,收銀這樣活你都幹,那麼這個你的職責就不單一了,你就要想下,是不是要把這些業務都分出去,招待客人是不是應該是服務員的職責,洗碗拖地是不是保潔的職責,收銀是不是前台收銀員的職責,這樣各幹各的活,如果有人不幹了,我隻要換了人過去頂替就可以了,不會影響到其他的功能),并且這些元素共同完成計算價格這個功能,
3.什麼是低耦合?
子產品與子產品之間、系統與系統之間的互動,是不可避免的, 但是我們要盡量減少由于互動引起的單個子產品無法獨立使用或者無法移植的情況發生, 盡可能多的單獨提供接口用于對外操作, 這個就是所謂的“低耦合”,耦合指的是子產品之間存在依賴,關系越緊密, 耦合越強, 子產品獨立性越差,
例如:我們平時用的電腦,電腦裡面有主機闆,如果主機闆要指定的顯示卡電腦才能運作,那麼這個主機闆和顯示卡高耦合,日常生活中,我們的電腦主機闆都會提供一個接口(插槽)給顯示卡,一般的顯示卡都可以(除了一些高配顯示卡,低配主機闆,帶不動),是以主機闆和顯示卡是屬于低耦合的
4.總結
一個好的系統應該是分成各個小塊,分而治之的思想,把複雜問題分成小問題,逐個擊破。每個小塊應該是高内聚,小塊之間應該是低耦合的。高内聚說的是這個小塊的功能已經不可分割了,已經足夠簡單。耦合說的是這個小塊依賴其他小塊提供的功能,低就是少,弱,高耦合就是多,而且強。