为什么要有请求模型?

Why have a Request Model?

创建请求模型对象并将其传递给交互器的基本原理是什么?

为什么不直接将数据作为参数传递并跳过分配?对我来说,这似乎是一个非常短暂的对象。

我错过了什么?

来自鲍勃叔叔的书"Clean Architecture":

The use case class accepts simple request data structures for its input, and returns simple response data structures as its output. These data structures are not dependent on anything. They do not derive from standard framework interfaces such as HttpRequest and HttpResponse. They know nothing of the web, nor do they share any of the trappings of whatever user interface might be in place.

关键方面是 "request data structures"(注意 "s")是独立且简单的数据结构。没有必要为每个交互器创建专用的请求模型类型,只要您传递给交互器的数据结构是您编程的原语 language/environment(例如 .Net 或 Java)或者您已经定义那些在用例层。

我使用请求模型来验证 "first view" 中的输入值 - int 值是 int 值,字符串不超过 5 个字符等等。 所以它承担主要责任:虚拟(类型)检查和对话。

请求还有助于将多个输入值分组到一个块中。 对于响应,我只使用具有可选 for"payload"(预期响应)和许多错误标志的结构。我第一次尝试放置错误对象(当然来自用例层)但问题是:需要针对实际视图实现、语言转换问题。有了标志,我就具体问题做了标记,这可能在用例中发生,而且我知道我应该为它们实施处理。