Как вы справляетесь с "значениями по умолчанию" при выполнении DDD
Мне интересно посмотреть, как люди справляются с деревьями решений при выполнении DDD. Например, у нас есть требование, что при сохранении нового экземпляра определенного типа должны быть построены некоторые ассоциации "по умолчанию" (довольно много). Пользователь может изменить их позже, хотя. Итак, если кто-то создает таблицу решений, как вы это представляете в своем домене или нет? Это относится к области страхования, поэтому, например, если я выберу один вариант, все связанные с ним "преимущества по умолчанию", опции и т. Д. Будут добавлены в полис, но затем пользователь сможет изменить его позже.
2 ответа
Это не является специфическим для DDD как такового, вы обычно реализуете это с использованием Factory для создания агрегатного корня по умолчанию. Поскольку это поведение специфично для бизнеса и, вероятно, подвержено изменениям, лучше перенести ответственность за создание объекта на фабрику, чем позволить самому объединенному корню справиться с этим.
Как предложил использовать фабрику. Для реализации по умолчанию используйте " шаблон особого случая", описанный Мартином Фаулером, чтобы получить реальный ООП.
Например, если у вас есть свойства Policy with Benefit и Options, и они являются классами, создайте производный класс следующим образом:
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 {}