請教banq,想再新專案使用DDD, 可是思路不是很清晰

zouruixin發表於2012-12-14
學了有兩週的理論了, 網上也看了不少經驗貼 包括ITEYE 與 INFOQ的
不過大部分例子我個人覺得 都只是包結構和 類的定義層級 與傳統貧血模式的區別

用白話說我的理解
從思想上我覺得DDD是希望 把業務 形成細粒度的 模型 ,模型裡包含的是業務的具體屬性和動作,好處是業務可以直觀體現在模型內, 而細粒度的業務變化較少, 一般都是聚合性的業務 也就是業務組合 變化會比較多 這樣把最細的業務動作放在模型內 重用性會很高。

不知道這個概念我理解的對不對?

但是如果一個新的專案,包的層級一定要按某個案例那樣劃分嗎 比如service 還有reponsitry什麼的,而且具體reponsitry與DAO的區別 在網上不斷有爭論 卻沒有權威的定義。reponsitry到底是個啥?

如果領域模型包含了所需的業務方法, 那就需要實際地呼叫, 在例項化領域模型前是否也需要依賴注入進行解耦合, 是否需要實現某介面?

如果非多個領域模型業務動作的組合,就不需要service直接呼叫, 那呼叫者又是誰 ,比如使用MVC框架, 是否由action等控制器來呼叫呢。 還是需要在外面包一層BO類?

由於具有業務屬性, 領域模型是否可以做值物件來傳輸?

其實這種思想如果從根本打通, 可能一切問題都不是問題了, 請@banq 幫我解惑 , 我一定會在新專案中實施DDD, 並且將經驗教訓在這裡與大家分享

[該貼被zouruixin於2012-12-14 11:36修改過]

相關文章