DDD深思,物件裝備模型

mewleo發表於2007-05-19
關於該思想的實現,請參照 實現物件裝備模式http://www.javaeye.com/topic/81086



本來想說很多客套話的,但拿捏不好語氣,該帖子主要討論一個草根想法。
大家一看就知道我是新鳥一隻,只是在這混了好久,第一次發言,想讓大牛們給我指導一下,我的收穫會很大。
先謝謝了,請儘量看完。(如時間不充足,請看紅色部分!)

草根來源:
場景——一個自運營的入口網站
系統——考慮了很久,打算用DWR+MeshCMS+guice+Db4o,輕輕輕量級。。。。
思路——使用基於檔案的內容管理,生成靜態的內容資料頁,動態互動使用ServerPush,完全OO模型,直接物件持久
問題——使用物件資料庫,那我的領域模型怎麼工作,要DAO合適嗎?魔鬼告訴我,db4o的session太好用了,耦合吧-_-
思考——在學習google的guice期間,當時正好看到方法注入,本想跳過,一般我不用,但突然想到了,既然db4o不適合
儲存複雜業務的物件,那麼我在物件取出時給他注入他將要用到的業務邏輯方法。。。。。Service輕鬆了好多,好像更
OO了。。。。於是,請看下文

OO的特性裡,繼承、封裝、多型,我又聯想到一個名詞,那就是包裝。與其說DDD中有貧血模型,不如說
是裸體模型,他沒有穿任何衣服、裝備、寵物、家族等等(扯到網路遊戲裡了)。不過事實就是如此,我們
的生活中不可能離開這些,那在程式設計的原始社會,從低階到高階,好像人會站立行走了,從過程到OO好像
人們有語言和溝通了,越來越接近自然的法則就是,我們的物件要穿衣服了,不光要有衣服,還要有手套、
工具、坐騎、家(持久層?!)。玩過變裝類遊戲角色的人知道,當他們換衣服時等於換了一種角色
換了一種特有屬性,唯一不同的就是基礎屬性,他的動作和專注點發生了變化,那麼,我們的軟體中,每個
物件好像不是一種角色,只完成單一的任務,而是在不同的場景,使用不同的服務,發生不同的動作,造成
不同的變化,那麼每一套物件之外的動作、屬性、狀態是不是像裝備一樣包裝著這個物件呢?!是不是可以
給物件準備好一套裝備,在他要去工作或者執行任務以前把他武裝起來而不是裸體上陣呢?我想問問物件,
你喜歡極品裝備嗎? 當然他回答不了我,但我列了幾個我自以為的可選答案:
A.無所謂(仍然保持原始的性感美麗)
B.喜歡(嚮往現代文明)
C.賊喜歡(迫切的願望說明他厭惡了裸奔的日子)
D.討厭,就是喜歡暴露 (。。。。。。。你男的女的?不對,公的母的?還不對,雄的雌的?反正變態)

這只是一個雛形,一種想法和衝動,我沒有腦力和能力繼續實踐他,至少目前還沒有,要休息下腦子才可以,
而且我的知識結構混亂,也不敢繼續想,但是直接告訴我這個道路在黑暗中有一思光明,好像從小到大我的
這種感覺總是很準。還有一點想說的是,程式設計師的性格和興趣不同,就好像遊戲裡的不同職業團隊裡的不同
角色,總是可以完成任務,不在乎哪中道路達到目標。只是我感覺周圍有像我一樣,那種路都不想選擇而又
想要到達目的地的人,仍然在繼續找尋一個新的道路(“世上本沒有路,走的人多了便成了路”)。

在JavaEye的討論帖http://mewleo.javaeye.com/blog/79536

相關文章