標籤:style class blog http tar com
今天,仔細閱讀了園子裡面的一個朋友寫的《一縷陽光:DDD(領域驅動設計)應對具體業務情境,如何聚焦 Domain Model(領域模型)?》(http://www.cnblogs.com/xishuai/p/3800656.html)這篇部落格,覺得這是一篇對DDD的分析總結性質的文章,寫得不錯,但奇怪的是,居然沒有一個人回複,也許是文章太長很少有人賴得著性子看完,但也可能是DDD叫好不叫座的原因,這篇隨筆裡面也對此進行了分析。不過,我覺得這個問題還有更深層次的原因,今晚跟朋友們探討了一下,總結後發在這裡,希望有更多的朋友能夠看到。
文章中說到了領域模型,還說到了領網域服務,這讓我覺得DDD這個東西有點雞肋啊,需要領網域服務去做協調 ,由此引入了工作單元、事務這些東西 ,甚至還有工作流程 。這說明基於DDD設計出來的領域模型功能很弱 ,DDD這種模型是靜態,所以需要領網域服務去處理動態東西 ,這相當於把事物分成了“動”,“靜”兩個方面去處理。
但是“動”,“靜”卻是相對的,因為,按照牛頓運動定律 ,是沒有絕對的靜的,運動是永恒的。 所以分析出來的這個 “靜 ”,沒有太大的意義。 因此,這註定 DDD這種建模方式,結果是雞肋,根本之道,是掌握事物的“動機”。 DDD推廣不起來,除了現實原因,跟它雞肋這個特點不無關係。
從事物的動機出發,進行建模,需要DCI這樣的東西。 DCI是一種切入方式,顧名思義,DCI的意思是資料在上下文中的互動,所以可以作為事物動機的觀察切入方式。這說明 ,DCI提供了一種比較有效途徑,但還是沒有觸及到根本問題。 不過DCI,相對於DDD,也算是一個很大的進步。但是太超前的東西總是很難讓人接受,DDD都是叫好不叫做,DCI,接受起來就更困難了。
我們順著 DCI的切入點,深入的觀察事物,分析資料的流入流出 ,進行歸納總結,發現某些事物總是有類似的行為。如果我們對這一類事物取一個名字,那麼最合適的名字就是 “角色”,所以我們立馬發現,這些資料其實就是角色進行互動的產物。 如果我們再深入的分析角色為何會有這些互動,那麼我們已經接近前面說的“動機”了。這就是角色的“心智”。所以,也有人說,DCI,其實就是對角色的心智進行建模。 從角色的動機出發,那麼我們就容易明白角色為何具有這些方法了,明白角色之間為何會有這些互動了。 角色進行互動需要一個載體、媒介,這個東西就是情境。角色互動過程的觀察維度 ,就是時間 。情境也就是我們說的空間維度,那麼我們馬上明白,這些事物的產生、發展、變化,其實就是角色在時空中的運動。 而且,這種運動,是永恒不止的。(參照附錄牛頓運動定律) 角色的具體扮演者,可以是人,可以是物,還可以是人類社會。人類社會在時空中的運動軌跡,這就是“
曆史”。如果說角色也是一個維度,那麼我們把時間緯度、情境維度聯合起來,這就是一個分析事物的方法論,假如我們用這個方法論來分析業務,那就是 《業務分析三維度(角色+情境+時間)理論》。 附錄:牛頓第一運動定律:
牛頓第一運動定律(Newton‘s first law of motion)表明,除非有外力施加,物體的運動速度不會改變。根據這定律,假設沒有任何外力施加或所施加的外力之和為零,則運動中物體總保持勻速直線運動狀態,靜止物體總保持靜止狀態。物體所顯示出的維持運動狀態不變的這性質稱為慣性。所以,這定律又稱為
慣性定律。物體的慣性與其品質有關。為什麼說運動是絕對的,靜止是相對的?
一個物體的靜止是相對於另一個物體的。(也就是所謂的參考系的相對性),牛頓曾說任何物體都是運動的,不存在不運動的東西,從量子力學的的角度也是這麼闡釋的。
相對靜止:
沒有任何方法可以證實一個物體是在絕對靜止之中。絕對靜止的物體是不存在的。靜止只是一個物體對於它周圍的另一個參照物保持位置不變,所以也只能是相對運動和相對靜止,運動和靜止是相對的。