2010-03-03 66 views
0

我有興趣瞭解人們在處理DDD時如何處理決策樹。例如,我們有一個要求,即當持久化特定類型的新實例時,必須建立一些「默認」關聯(相當多)。但用戶可以隨時更改它們。所以如果你創建一個決策表,你如何在你的領域表示這個,或者你呢?這是在保險領域,所以例如,如果我選擇一個選項,那麼所有相關的「默認」優惠,選項等都會被添加到策略中,但用戶隨後可以隨意更改。如何在處理DDD時處理「默認值」

回答

0

這不是特定於DDD本身,您通常會使用Factory來實現此目的以創建默認聚合根。由於這種行爲是特定於業務的,可能會隨時發生變化,因此將創建對象的責任外化到工廠比讓集合根處理本身更好。

0

建議使用工廠。爲實現默認使用,Martin Fowler描述的「special case pattern」具有真正的OOP。

例如,如果您有效益和選項屬性策略,他們是類創建一個派生類是這樣的:

class Policy 
{ 
Benefit Benefit {get;set;} 
IList<Option> Options {get;set;} 

//Factory 
public static Policy CreateDefaultPolicy() 
{ 
    var retVal = new Policy(); 
    retVal.Benefit = new DefaultBenefit(); 
    retVal.Options =new List<Options>(); 
    retVal.Options.Add(DefaultLifeOption); 
    retVal.Options.Add(DefaultCarOption); 
    retun retVal; 
} 
} 

class Benefit {} 
class DefaultBenefit: Benefit {} 

class Option{} 
class DefaultLifeOption {} 
class DefaultCarOption {}