閱讀401 返回首頁    go 汽車大全


聊聊架構-模塊化

什麼是模塊化?
 
模塊化是指解決一個複雜問題時,自上而下逐層把係統劃分成若幹模塊的過程。

 
為什麼需要模塊化?

模塊化的目的是為了降低程序的整體複雜度,使程序設計、調試和維護等簡單化。各個模塊可獨立工作,即便單模塊出現故障,也不影響整個係統工作。模塊化具有三個特性:相互獨立,可替換,通用。比如車載收音機就是模塊化設計,收音機和汽車裏的其他模塊相互獨立,收音機壞了不會影響車上的其他功能,具備獨立性。因為汽車預留了接口,可以隨意的將收音機替換成CD機和DVD機等,具備可替換性。車載收音機從汽車裏取出來後,拿到其他車或者其他地方也是可以使用的,具備通用型。

如何實現模塊化?
 

模塊化的表現形式可以是多個二方包或者一個Maven工程的子模塊。係統中的公共組件可以抽取出來形成一個二方包,提供給更多的係統使用,比如業務係統裏的任務框架,數據庫鎖組件和配置管理等。

 

如何劃分模塊?

  • 基於水平切分。把一個係統按照業務類型進行水平切分成多個模塊,比如權限管理模塊,用戶管理模塊,各種業務模塊等。
  • 基於垂直切分。把一個係統按照係統層次進行垂直切分成多個模塊,如DAO層,SERVICE層,業務邏輯層。
  • 基於單一職責。將代碼按照職責抽象出來形成一個一個的模塊。將係統中同一職責的代碼放在一個模塊裏。比如我們開發的係統要對接多個渠道的數據,每個渠道的對接方式和數據解析方式不一樣,為避免不同渠道代碼的相互影響,我們把各個渠道的代碼放在各自的模塊裏。
  • 基於易變和不易變。將不易變的代碼抽象到一個模塊裏,比如係統的比較通用的功能。將易變的代碼放在另外一個或多個模塊裏,比如業務邏輯。因為易變的代碼經常修改,會很不穩定,分開之後易變代碼在修改時候,不會將BUG傳染給不變的代碼。

易變和不易變?

根據代碼的易變程度,將不變和變化的功能隔離,可以讓代碼更加穩定,減少代碼的修改量,從而降低維護成本。從幾個層麵逐漸入手:

  1. 係統分層:J2EE係統一般都劃分成頁麵展現層,業務邏輯層和持久層。業務邏輯層容易變,而持久層變化小。對外提供服務係統分層是服務層,實現層和持久層,一般也是實現層不穩定需要經常修改,但是修改不會波及到持久層和服務層。將係統分層後,底層要更加穩定,可以新增接口或代碼,但是盡量減少修改代碼,因為底層一旦出錯,影響麵會非常廣。係統間的分層也同樣是需要底層係統更穩定。
  2. 代碼分隔:代碼上分為接口,抽象類和實現類。抽象類和接口要做到充分的抽象,從而減少修改。比如接口要符合單一原則,避免接口修改。比如Java的Closeable接口裏隻有一個close方法,指責非常單一,所以無論未來有什麼場景,基本不會修改這個接口。如果你的接口裏有很多其他職責的方法,一旦一個方法修改,很多實現類就必須跟著修改。
  3. 轉載自 並發編程網 - ifeve.com

最後更新:2017-05-23 10:32:00

  上一篇:go  RecyclerView Part 1:為ListView專家寫的基礎
  下一篇:go  並發框架Disruptor譯文