在企業(yè)項目中,包層次和類關(guān)系比較負(fù)責(zé),把代碼拆分成模塊是一個比較困難的任務(wù),因為這需要你清晰的劃分功能的邊界,比如把業(yè)務(wù)邏輯和數(shù)據(jù)持久化拆分開來。
但你的項目符合高內(nèi)聚低耦合時,模塊化就變得很容易,這是一條非常好的軟件開發(fā)實踐。一個很好的模塊化的例子就是Spring框架,spring框架提供了很多服務(wù),比如MVC web框架、事務(wù)管理器、JDBC數(shù)據(jù)庫連接等,下圖展示了Spring3.x的模塊間的關(guān)系:
http://wiki.jikexueyuan.com/project/gradleIn-action/images/dag32.png" alt="" />
看起來這個架構(gòu)非常的龐大嚇人,定義了非常多的組件相互間的依賴關(guān)系比較復(fù)雜,在實際使用過程中你并不需要導(dǎo)入整個框架到你的項目中,你可以選擇你需要使用的服務(wù)。幸運(yùn)的是模塊之間的依賴都是通過元數(shù)據(jù)指定的,Gradle的依賴管理很容易解析它的傳遞依賴。
下面我們還是繼續(xù)之前那個ToDo的例子,我們來把它拆分為多個模塊。
http://wiki.jikexueyuan.com/project/gradleIn-action/images/dag33.png" alt="" /> http://wiki.jikexueyuan.com/project/gradleIn-action/images/dag34.png" alt="" />
你已經(jīng)根據(jù)類的功能把它們拆分成一個個包,基本上分為下面幾個功能:
雖然這是一個非常小的項目,這些模塊之間也有依賴關(guān)系:
http://wiki.jikexueyuan.com/project/gradleIn-action/images/dag35.png" alt="" />
現(xiàn)在很容易把存在的項目結(jié)構(gòu)重構(gòu)成幾個模塊,對于每個模塊,使用合適的名稱創(chuàng)建一個子目錄,把相關(guān)的代碼移動到里面。默認(rèn)的源代碼路徑src/main/java還是毫發(fā)無損,Web模塊需要默認(rèn)的web應(yīng)用源代碼目錄src/main/webapp,下面顯示了模塊化的項目布局:
http://wiki.jikexueyuan.com/project/gradleIn-action/images/dag36.png" alt="" /> http://wiki.jikexueyuan.com/project/gradleIn-action/images/dag37.png" alt="" />