根據(jù)Eric Evans在其“領(lǐng)域驅(qū)動設(shè)計”一書中定義,領(lǐng)域模型劃分為實體和值對象兩種,實體模型是指業(yè)務(wù)領(lǐng)域中具有獨立屬性的對象;而值對象則可能是一種Description或狀態(tài)或規(guī)則。只要有實體對象,就可能存在實體的狀態(tài),狀態(tài)跟蹤有時成為一個業(yè)務(wù)領(lǐng)域使用計算機軟件的首要跟蹤,但是,數(shù)據(jù)庫不是對象狀態(tài)的唯一表達方式,只是一種存儲方式(見狀態(tài)對象:數(shù)據(jù)庫的替代者)。 圖中,實體核心對象大部分可能有一種類型,例如核心模型是產(chǎn)品,那么存在產(chǎn)品目錄;核心模型是消息;就存在消息類型;核心模型是信息;總存在信息類別,我們總是使用分類方式來治理業(yè)務(wù)領(lǐng)域的信息,有時,類別甚至復(fù)雜到樹形結(jié)構(gòu)。 核心實體模型有時會有一個1:N關(guān)聯(lián)的子實體,一般可能表達實體的細(xì)節(jié),例如:核心模型是訂單,那么存在訂單條目這樣一個細(xì)節(jié),一個訂單中可能有多個訂單條目;假如核心模型是信息,那么存在該信息的多個回復(fù)或評論;這樣的關(guān)聯(lián)一般存在多個業(yè)務(wù)領(lǐng)域中。模型界面實現(xiàn) 原來,我們以為分析設(shè)計階段無需了解實現(xiàn)細(xì)節(jié),分析人員只要悶頭做分析UML圖,而無需顧及如何具體實現(xiàn),其實這是一個誤區(qū)。 Eric Evans在其“領(lǐng)域驅(qū)動設(shè)計”一書中認(rèn)為:分析人員負(fù)責(zé)從領(lǐng)域中收集基本概念; 設(shè)計則必須指明一組適應(yīng)編程工具構(gòu)造的組件,以及這些組件必須能夠在目標(biāo)環(huán)境中有效執(zhí)行。模型驅(qū)動設(shè)計(Model-Driven Design)拋棄了分裂分析模型與設(shè)計的做法,使用單一的模型來滿足這兩方面的要求。因此,對于核心模型必須把握了解其實現(xiàn)細(xì)節(jié)。 從另外一個方面來說,中國的客戶總是從界面設(shè)計來表達他們的意圖(假如中國客戶能夠使用Use Case等UML圖來表達他們概念真是不可想象),例如客戶會說,我希望有一個界面讓我將訂單數(shù)據(jù)輸入,然后能夠查詢符合查詢條件的訂單。因此,我們的核心模型至少能夠順利地映射到界面實現(xiàn),相反,這個客戶有這樣訂單界面要求,但是你沒有提供一個與之適應(yīng)的核心實體模型,界面實現(xiàn)將變得復(fù)雜,甚至走很多彎路,誕生不少DTO垃圾對象。 以JdonFramework框架實現(xiàn)為例子,框架提供了圍繞核心模型的新增刪除修改查詢(CRUD)功能以及批量功能的快速實現(xiàn),尤其CRUD功能實現(xiàn)前提是必須提煉出核心模型,從而其界面設(shè)計流程就能通過配置立即實現(xiàn),這樣一步到位實現(xiàn)領(lǐng)域模型到界面的過渡,可以將我們設(shè)計核心模型和客戶要求的界面需求能夠做到完整的統(tǒng)一。 開源JdonFramework下載包中message案例實際就是上述核心模型圖的一種實現(xiàn)項目,更復(fù)雜的項目可以認(rèn)為是核心模型的重疊和反復(fù)使用(從原理上講,核心模型是四色原型的體現(xiàn),而四色原型被認(rèn)為是大部分企業(yè)系統(tǒng)的基本組成元素,見[book][UML][Peter Coad]Java Modeling in Color with UML)。新聞熱點
疑難解答