聊聊架構-模塊化

                     轉載自併發編程網 – ifeve.com

                     什麼是模塊化?

                      模塊化是指解決一個複雜問題時,自上而下逐層把系統劃分成若干模塊的過程

爲什麼需要模塊化?

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

如何實現模塊化?
 

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

 

如何劃分模塊?

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

易變和不易變?

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

  1. 系統分層:J2EE系統一般都劃分成頁面展現層,業務邏輯層和持久層。業務邏輯層容易變,而持久層變化小。對外提供服務系統分層是服務層,實現層和持久層,一般也是實現層不穩定需要經常修改,但是修改不會波及到持久層和服務層。將系統分層後,底層要更加穩定,可以新增接口或代碼,但是儘量減少修改代碼,因爲底層一旦出錯,影響面會非常廣。系統間的分層也同樣是需要底層系統更穩定。
  2. 代碼分隔:代碼上分爲接口,抽象類和實現類。抽象類和接口要做到充分的抽象,從而減少修改。比如接口要符合單一原則,避免接口修改。比如Java的Closeable接口裏只有一個close方法,指責非常單一,所以無論未來有什麼場景,基本不會修改這個接口。如果你的接口裏有很多其他職責的方法,一旦一個方法修改,很多實現類就必須跟着修改。
發佈了42 篇原創文章 · 獲贊 3 · 訪問量 9萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章