假设用户想要将客户添加到系统中。他用客户信息填写表格,然后按一下按钮。 click事件由UI层中的表单对象捕获。谁负责使用用户,表单本身或业务层中的控制器提供的信息创建新的客户对象?
在“应用UML和模式”一书中,在我到目前为止看到的示例中,用户输入以表单或参数传递给控制器,然后控制器创建适当的对象。我的疑问是因为我被告知最好使用对象在层之间传递数据,而不是一堆参数。
答案 0 :(得分:0)
这是一个非常广泛的问题,您可能会收到主要是opions,而不是问题解决方案。在我看来(原文如此),显然没有责任创建对象,但可能是单独对象的工作(最有可能是factory)。控制器的工作是调度进入其他服务的工作 - 就是它single responsibility。
在同一方面,表单中的对象创建无论如何都是不可能的,但是还有另一个原因是不能在表单中创建对象:客户对象属于业务层(域),而不是表示层。
如果您正在讨论用于在不同层之间传输数据的对象仅,则此参数将变为无效,参见DTO。在这种情况下,如果UI层创建一个CustomerDTO
并将其交给控制器就可以了(上面讨论了对象创建的责任也适用于此)。