在域驱动设计中,使用工厂在域层中创建域对象似乎是一种很好的做法(而不是使用直接构造函数或 IoC)。
但是在表示层中使用域对象工厂呢?例如,假设我正在根据从演示者获得的用户输入创建域对象。
这是一个示例,假设我有一个配置域对象,该对象具有许多十进制设置。
公共类配置:PersistantObject {
public decimal temperature {get;set;}
...(times 20)
public decimal gravity {get;set;}
}
为了在域层而不是演示者层中创建这个对象,我必须将这些十进制值中的每一个作为函数参数传递。创建一个笨拙的函数定义和调用。
即 ConfigurationService.CreateConfiguration(温度, ...(x20), 重力);
也许更好的解决方案是在演示者层创建配置对象,并直接从用户输入分配配置对象的所有值,跳过冗长的函数调用。
配置配置 = ConfigurationFactory.CreateNewConfiguration();
配置温度=温度;
..(x20).. = ...;
config.gravity = 重力;
ConfigurationService.SaveNewConfiguration(config);
但我想知道这种方法是否错误,为什么?如果这两种方法都是错误的,那么从用户输入创建长对象的最佳方法是什么?为什么?
谢谢!