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