在域驱动设计中,使用工厂在您的域图层中创建域对象似乎是一种很好的做法(与使用直接构造函数或IOC)。在模型视图中使用演示者中的工厂模型视图演示者和域驱动设计项目
但是如何在演示者层中使用域对象工厂呢?例如,假设我是通过从演示者获得的用户输入创建一个域对象。
下面是一个示例,假设我有一个配置域对象,它具有许多小数设置。
公共类配置:PersistantObject {
public decimal temperature {get;set;}
...(times 20)
public decimal gravity {get;set;}
}
为了在域中层创建该对象,而不是演示层,我将不得不通过每个这些十进制值的作为功能参数。创建一个笨拙的函数定义和调用。
ie ConfigurationService.CreateConfiguration(temperature,...(x20),gravity);
或许更好的解决方案是在演示者层创建Configuration对象,并直接从用户输入中分配配置对象的所有值,从而跳过冗长的函数调用。
Configuration config = ConfigurationFactory.CreateNewConfiguration();
config.temperature = temperature;
..(x20).. = ...;
config.gravity = gravity;
ConfigurationService.SaveNewConfiguration(config);
但我想知道这种方法是错误的,为什么? 如果这两种方法都是错误的,那么从用户输入创建冗长对象的最佳方法是什么?为什么?
谢谢!