Martin Fowler定義是: 事務腳本,將所有邏輯組織在一個單一過程,進行資料庫直接調用,每個業務請求都有自己的事務腳本,並且是一個類的公開方法。 領域模型,是一系列相互關聯的對象,每個對象代表一定意義的獨立體,既可以一起以一種大規模方式協作;也可以小到以單線方式運行。 事務腳本總體來說:就像 ...
Martin Fowler定義是:
事務腳本,將所有邏輯組織在一個單一過程,進行資料庫直接調用,每個業務請求都有自己的事務腳本,並且是一個類的公開方法。
領域模型,是一系列相互關聯的對象,每個對象代表一定意義的獨立體,既可以一起以一種大規模方式協作;也可以小到以單線方式運行。
事務腳本總體來說:就像直奔主題,平鋪直敘,就功能談功能,直接沒有迴旋餘地;領域模型給人感覺好像肚子里就那麼點貨而領域模型則象是文人騷客,上了一個檔次,會使用美妙表達方式,有餘地。 比如唐詩:清明時節雨紛紛,路上行人欲斷魂;借問酒家何處有,牧童遙指杏花村;這是領域模型描述方式,如果採取事務腳本方式就是:清明我很傷心,傷心要喝酒。
事務腳本同樣用類,卻並不是真正的面像對象:很多人也在用類,也在使用模式,但是他們的思維一樣是面向過程的,因為他們的世界中除了過程就不存在任何東西了,它們倆如何來區分呢?其實還是面向過程與面向對象的分別:
事務腳本:圍繞功能,以功能為中心。
領域模型:描述領域類,以類之間的協作完成所需功能。
以上引用:http://www.jdon.com/34056 領域模型VS事務腳本
我理解的事物腳本與領域模型的區別是,類是死的還是活的。
事物腳本模式本質還是面向過程編程,儘管定義了很多類來將分層業務邏輯,但是定義的類是死的,機械的,就好比機器人,沒有自己的狀態,就是為了功能而生,固定的輸入進去,固定的輸出出來。
領域驅動模式本質是一些類協同工作,是面向對象編程,就好比活生生的人,有自己的狀態,行為,一群人相互協同工作。
如果項目太小,兩者不好區分,比如,功能太簡單:送快遞,讓機器人,還是活生生的人完成這個業務,結果都是相同的,所以功能的複雜度太
小,兩者沒有太大的區別。
事物腳本雖是面向過程編程,但是略帶有面向對象色彩,就像機器人,還是太機械死板,缺少了一種作為人的鮮活感。
領域驅動雖是面向對象編程,但是其實還是有過程的(任何邏輯都是有過程的),但是這時不在以過程為主,增強了對象的主觀性,就感覺是工作不在是為了完成事業贏得巨大成就,而是為了滿足人類的幸福感責任感。
事物腳本:
領域模型: