為了不誤導(dǎo)其他人雀彼,這篇文章不要看了,我覺得還是參考領(lǐng)域模型即寡,做一定的簡化徊哑。
技術(shù)領(lǐng)域概念是不缺的。
dao聪富、domain莺丑、repository、service墩蔓、bean梢莽、component...,repository和component是spring中的概念奸披,因?yàn)榛ハ嘤嘘P(guān)聯(lián)昏名,我也拉進(jìn)來。
首先聲明我寫這個東西不是為了給出我的建議阵面,只是為了梳理思路轻局,一會在內(nèi)部討論洪鸭,并且會在我們公司統(tǒng)一標(biāo)準(zhǔn)。還有一點(diǎn)仑扑,我純粹是為了練練寫東西的能力览爵。
這其中無非是對數(shù)據(jù)對象及其操作的分層,為了讓代碼更加好讀更加好維護(hù)夫壁。那么我們想數(shù)據(jù)對象和操作都會被誰用到拾枣?一般是某個controller調(diào)用一些操作,完成數(shù)據(jù)對象的增刪改查盒让。這些操作就是增刪改查或者增加重組梅肤,操作的目標(biāo)和結(jié)果就是對象及其集合。這里的對象不一定是一個數(shù)據(jù)庫實(shí)體邑茄,也可能是文件實(shí)體或者中間實(shí)體姨蝴。所以我簡單分成三類
domain:對應(yīng)數(shù)據(jù)庫實(shí)體setter,gettter和toString()沒有其他方法--工具生成
bean:對應(yīng)非數(shù)據(jù)庫對象肺缕,除了setter左医,gettter和toString()沒有其他方法
repository:對應(yīng)一般開發(fā)中的dao,是對domain操作的類和bean操作類同木。--工具生成
service:我認(rèn)為還是能提供一些公共服務(wù)的類浮梢。
biz:完成對repository的的組合調(diào)用。
在我設(shè)計(jì)的框架中彤路,沒有domain的概念秕硝,我用一個通用的對象BOBean,他實(shí)際上是一個map洲尊,我認(rèn)為可以很好的對應(yīng)關(guān)系數(shù)據(jù)庫的一條記錄远豺,對kv數(shù)據(jù)庫也是一樣的。我為什么要創(chuàng)建一個domain呢坞嘀?我和其他技術(shù)人討論幾次躯护,他們都不能給我一個很好的理由。說實(shí)話丽涩,我對過分分層有點(diǎn)反感棺滞,我看過一個開源項(xiàng)目,應(yīng)該是一個很牛的人矢渊,我從代碼也可以看出來检眯,但是他每個包下都是接口,然后有個對應(yīng)的實(shí)現(xiàn)昆淡。有的實(shí)現(xiàn)是空的,如果是機(jī)器自動生成的刽严,我無話可說昂灵,如果是人為寫的避凝,我覺得對方有潔癖,太拘泥于教科書眨补。我看了幾個空的java類管削,難道你說好維護(hù)嗎?我是不是也要看一看呢撑螺?