提出問(wèn)題
在我大學(xué)畢業(yè)的時(shí)候证鸥,曾做過(guò)一些項(xiàng)目,常常會(huì)在業(yè)務(wù)對(duì)象中直接寫(xiě)入用戶(hù)界面勤晚、數(shù)據(jù)庫(kù)訪(fǎng)問(wèn)等支持代碼枉层,而一些業(yè)務(wù)邏輯則會(huì)被嵌入到用戶(hù)界面組件和數(shù)據(jù)庫(kù)腳本中。這也是為了以最簡(jiǎn)單的方式短期內(nèi)完成任務(wù)赐写。
如果和領(lǐng)域有關(guān)的代碼分散在大量的其他代碼之中鸟蜡,那么查看和分析領(lǐng)域代碼就會(huì)變得異常困難。
關(guān)注點(diǎn)分離
要想創(chuàng)建出能夠處理復(fù)雜任務(wù)的程序挺邀,需要做到關(guān)注點(diǎn)分離揉忘,使得設(shè)計(jì)中的每個(gè)部分都得到獨(dú)特的關(guān)注跳座。
領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)中,最常用的分層架構(gòu)設(shè)計(jì)是泣矛,用戶(hù)界面層疲眷,應(yīng)用層,領(lǐng)域?qū)幽啵A(chǔ)設(shè)施層狂丝。
領(lǐng)域?qū)ο髴?yīng)該將是重點(diǎn)放在如何表達(dá)領(lǐng)域模型上,而不需要考慮自己的顯示和存儲(chǔ)問(wèn)題哗总。這樣就可以使得模型的含義足夠豐富几颜,結(jié)構(gòu)足夠清晰,可以捕捉基本的業(yè)務(wù)知識(shí)讯屈,才是實(shí)現(xiàn)Model-Driven-Desgin的關(guān)鍵蛋哭。
領(lǐng)域?qū)嶓wEntity
Entity可以是任何事物,只要滿(mǎn)足兩個(gè)條件:
- 它的生命周期中具有連續(xù)性涮母;
- 它的區(qū)別并不是由那些對(duì)用戶(hù)非常重要的屬性決定的谆趾;
在區(qū)分一個(gè)對(duì)象的時(shí)候,我們要確保每個(gè)對(duì)象有唯一的結(jié)果哈蝇,例如演唱會(huì)的座位號(hào)是唯一的棺妓,那么座位就是Entity,如果采用入場(chǎng)券的方式炮赦,那么座位就不是Entity怜跑。
所以我們區(qū)分實(shí)體的時(shí)候應(yīng)當(dāng)考慮它的屬性和行為。