在做DDD时如何处理“默认值”

时间:2010-03-03 16:53:10

标签: oop model domain-driven-design decision-tree mdd

我有兴趣了解人们在做DDD时如何处理决策树。例如,我们要求在持久化特定类型的新实例时,必须构建一些“默认”关联(很多)。用户可以在以后随意更改它们。因此,如果创建决策表,您如何在您的域中表示这个,或者您呢?这是在保险领域,因此,例如,如果我选择一个选项,那么所有相关的“默认”权益,选项等都会添加到策略中,但是用户随后可以随意更改它。

2 个答案:

答案 0 :(得分:0)

这不是特定于DDD本身,您通常使用Factory来创建默认聚合根。由于此行为是特定于业务的,并且可能会发生变化,因此将对象创建的责任外部化到工厂比让聚合根本身处理这个更好。

答案 1 :(得分:0)

如建议使用工厂。要实现默认值,请使用Martin Fowler所描述的“special case pattern”来获得真实的OOP。

例如,如果您有一个带有Benefit和Options属性的Policy并且它们是类,则创建一个派生类,如下所示:

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 {}