1. 程式人生 > 其它 >工廠類設計模式( 耦合與解耦 )

工廠類設計模式( 耦合與解耦 )

工廠類設計模式

  1. 工廠設計模式,顧名思義,就是用來生產的,在java 中,所有的物件都需要建立,若在建立時直接new該物件,會出現該物件耦合嚴重的現象,假設我們要更換物件,所有的new物件的地方都需要修改一次,這顯然不便於開閉使用,若我們使用工廠來生產物件,只跟工廠打交道,就徹底和物件解耦,若有更換直接在工廠內選擇更換該物件即可,達到與物件解耦的目的。所以說工廠模式最大的優點是:解耦。
  2. 什麼是耦合?
    耦合,在軟體工程中,簡單的說就是,指一程式中,模組及模組之間資訊或引數依賴的程度。

詳細的說,耦合表示兩個子系統(或類)之間的關聯程度,當一個子系統(或類)發生變化時對另一個子系統(或類)的影響很小,則稱它們是鬆散耦合的;反之,如果變化的影響很大時,則稱它們是緊密耦合的。耦合的強弱取決於模組間接間的複雜性、引用模組的位置和資料的傳送方式等。設計時應儘量使模組間的耦合度小,模組間的耦合度直接影響系統的可理解性、可測試性、可靠性和可維護性>

  1. 什麼是解耦
    降低耦合度可以理解為解耦,模組間有依賴關係必然存在耦合,絕對的零耦合目前在做不到,但可以通過現有的方法將耦合度降至最低。

  2. 常用的解耦方法有如下幾種:

(a)採用現有設計模式實現解耦,如事件驅動模式、觀察者模式、責任鏈模式等都可以達到解耦的目的;
(b)採用面向介面的方式程式設計,而不是用直接的型別引用,除非在最小內聚單元內部。但使用該方法解耦需要注意不要濫用介面。
(c)高內聚,往往會帶來一定程度的低耦合度。高內聚決定了內部自行依賴,對外只提供必須的介面或訊息物件,那麼由此即可達成較低的耦合度。

  1. 什麼是程式設計中的高內聚、低耦合?

耦合性又稱塊間聯絡。是指軟體系統結構中各模組間相互聯絡緊密程度的一種度量。
耦合性分類(低=>高)包括:無直接耦合、資料耦合、標記耦合、控制耦合、外部耦合、公共耦合、內容耦合。

  • 無直接耦合:兩個模組之間沒有直接關係,它們之間的聯絡完全是通過主模組的控制和呼叫來實現的。耦合度最弱,模組獨立性最強。子模組無需知道對方的存在,子模組之間的聯絡,全部變成子模組和主模組之間的聯絡。
  • 資料耦合: 指兩個模組之間有呼叫關係,傳遞的是簡單的資料值,相當於高階語言的值傳遞;
  • 標記耦合: 指兩個模組之間傳遞的是資料結構,如高階語言中的陣列名、記錄名、檔名等這些名字即標記,其實傳遞的是這個資料結構的地址;
  • 控制耦合: 指一個模組呼叫另一個模組時,傳遞的是控制變數(如開關、標誌等),被調模組通過該控制變數的值有選擇地執行塊內某一功能
  • 外部耦合:一組模組都訪問同一全域性簡單變數,而且不通過引數表傳遞該全域性變數的資訊,則稱之為外部耦合,比如我們下單平倉時引用查持倉之後的倉位資料,倉位資料作為全域性變數傳遞。外部耦合和公共耦合很像,區別就是一個是簡單變數,一個是複雜資料結構。
  • 公共耦合: 指通過一個公共資料環境相互作用的那些模組間的耦合。公共耦合的複雜程式隨耦合模組的個數增加而增加。>

內聚性又稱塊內聯絡。是指模組的功能強度的度量,即一個模組內部各個元素彼此結合的緊密程度的度量。一個模組內各元素聯絡的越緊密,則它的內聚性就越高。
內聚性分類(從低到高): 偶然內聚,邏輯內聚,時間內聚,通訊內聚,順序內聚,功能內聚。

  • 偶然內聚: 指一個模組內的各處理元素之間沒有任何聯絡。
  • 邏輯內聚: 指模組內執行幾個邏輯上相似的功能,通過引數確定該模組完成哪一個功能。
  • 時間內聚: 把需要同時執行的動作組合在一起形成的模組為時間內聚模組。
  • 通訊內聚: 指模組內所有處理元素都在同一個資料結構上操作(有時稱之為資訊內聚),或者指各處理使用相同的輸入資料或者產生相同的輸出資料。
  • 順序內聚: 指一個模組中各個處理元素都密切相關於同一功能且必須順序執行,前一功能元素輸出就是下一功能元素的輸入。
  • 功能內聚: 這是最強的內聚,指模組內所有元素共同完成一個功能,缺一不可。與其他模組的耦合是最弱的。

耦合性與內聚性是模組獨立性的兩個定性標準,將軟體系統劃分模組時,儘量做到高內聚低耦合,提高模組的獨立性,為設計高質量的軟體結構奠定基礎。