阿里的java開發(fā)手冊給出了代碼分層的:
豐富一點:
第一層:
controller, rpc service, mq 等等 輕業(yè)務(wù)邏輯,這樣的話 方便業(yè)務(wù)接口的切換, 譬如同一塊邏輯,原本走controller 接口,現(xiàn)在走rpc service;
第二層:
業(yè)務(wù)層, 一般來講業(yè)務(wù)的復(fù)用性比較低;
第三層:
manager層, 可復(fù)用的邏輯, 或者多個dao組合的使用 等等
第四層:
dao層,代理層, 其實都是數(shù)據(jù)源層;
禁止跨層調(diào)用,每一層都有自己的職責(zé);對于同級調(diào)用的話,我認(rèn)為service層是可以的;
在阿里巴巴編碼規(guī)約中列舉了下面幾個領(lǐng)域模型規(guī)約:
DO(Data Object):與數(shù)據(jù)庫表結(jié)構(gòu)一一對應(yīng),通過DAO層向上傳輸數(shù)據(jù)源對象。
DTO(Data Transfer Object):數(shù)據(jù)傳輸對象,Service或Manager向外傳輸?shù)膶ο蟆?br>
BO(Business Object):業(yè)務(wù)對象。由Service層輸出的封裝業(yè)務(wù)邏輯的對象。
VO(View Object):顯示層對象,通常是Web向模板渲染引擎層傳輸?shù)膶ο蟆?/p>
DO的數(shù)據(jù)不能直接傳入controller層;
分層不是死的,每個人都有自己的想法,自己的風(fēng)格,但當(dāng)大家都有了一樣的共識,遵循一樣的規(guī)范,那么熟悉代碼的速度會更快,維護起來更加方便;