2010-03-03 65 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 {}