領域物件與業務邏輯關係設計思路

cuwkuhaihong發表於2011-01-05
前一段時間我用面向的物件的方式來寫我自己的一個小JEE應用程式,業務邏輯比較簡單,就是一些“增刪改查”的工作,我一直想把我的小應用程式納入實際應用中,後來在JDON上看到了大家關於DDD的困惑,我也遇到了業務邏輯該寫在什麼地方。
經過一番思考之後,我設計出了一個新的程式設計方式,我認為已經從理論上解決這個問題,所以在這裡與大家分享一下。如圖:

[img index=1]
我的每一個Model都是由“物件”+“上下文”(一個*.properties配置檔案,也可沒有),model可以完成自己的“增刪改查”,Model也可以說是“領域物件”,包含屬性和行為,在沒有什麼業務邏輯的時候,即只有“增刪改查”,也就沒有必要寫service類了。只有當model(領域物件)的某行為包含業務邏輯的時候,才寫包含業務邏輯的Service,然後讓這個model在呼叫service完成,時常呼叫者會把自己作為一個引數傳入,意味著自己參與了邏輯。無論邏輯上怎麼變化,view與後臺互動始終未變,因為view呼叫的是model的方法。

在說說業務邏輯,其包含:制度,規則,演算法。領域物件應該是參與在制度和規則之中,只有演算法可以認為是工具。所以我才說Model呼叫service的時候,如果service是制度和規則描述體,就應該把領域物件自己傳入其中。想想你去銀行辦一張卡,你,櫃員,電腦,銀行都是交易規則和銀行制度的參與者。

相關文章