我们正在建立一个房地产门户网站。我们有服务、映射器和实体。在这个阶段,我们允许用户
- 通过表单创建属性。
- 上传包含 1 个或多个属性的批处理文件。
因此,如果他通过表单创建属性,我们可以验证表单,如果它是有效属性,我们可以将其添加到我们的系统中。但是如果他通过批处理文件上传,我们认为表单的责任是
- 验证用户是否提供了文件
- 文件类型有效
- 并且文件大小在允许的范围内。
在此之后,它应该将文件移交给控制器或服务。
现在待处理的任务是
- 处理文件并检索内容
- 验证内容
- 如果经过验证,请保存属性或显示错误。
那么哪些部分负责上述任务呢?
我认为控制器应该进行初始文件处理并将数据传递给服务。这意味着我们将在控制器中创建/获取表单对象并在控制器中验证表单。
现在下一部分是验证内容,这实际上是实体的集合。所以我们对这个阶段有以下想法
- 服务将验证数据并创建实体,并将它们保存。
- 或者服务将使用提供的数据创建实体,然后调用实体的验证函数。
- 或者服务将尝试使用提供的数据创建实体(将数据发送到实体构造函数),如果数据有效,则将创建实体或生成错误等。
我可以考虑上述方法的可能问题是
- 如果服务正在验证数据,则意味着服务将知道实体的内部结构,因此如果以后我们需要更新实体结构,我们也必须更新服务。这将引入某种依赖。
- 在第二种方法中,如果实体无效,我认为不应该首先创建实体。
- 在第三种方法中,我们在实体的构造函数中创建了一个功能,因此使实体依赖于数据。所以当我们需要从持久化中获取实体时,我们需要提供一些存根数据。
还是我想多了??