Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Design patterns 控制器应包含来自特定实体或屏幕的所有请求?_Design Patterns_Controller_Request_Entity - Fatal编程技术网

Design patterns 控制器应包含来自特定实体或屏幕的所有请求?

Design patterns 控制器应包含来自特定实体或屏幕的所有请求?,design-patterns,controller,request,entity,Design Patterns,Controller,Request,Entity,控制器应包含来自特定实体或屏幕的所有请求?例如,假设我们有一个屏幕,在那里我们可以保存电子商店的新客户,编辑现有客户,等等,这样我们就可以创建ClientController。我们有另一个屏幕,我们可以保存和更新我们的电子元件库存。所以我们可以创建一个StockController。 但是,如果我们有另一个屏幕,要求我们显示一个客户列表和一个库存组件列表,该怎么办。这两个请求应该去哪里 最后两个请求是否应该转到另一个名为ListsController或类似的控制器 客户名单是否应该转到Clie

控制器应包含来自特定实体或屏幕的所有请求?例如,假设我们有一个屏幕,在那里我们可以保存电子商店的新客户,编辑现有客户,等等,这样我们就可以创建ClientController。我们有另一个屏幕,我们可以保存和更新我们的电子元件库存。所以我们可以创建一个StockController。 但是,如果我们有另一个屏幕,要求我们显示一个客户列表和一个库存组件列表,该怎么办。这两个请求应该去哪里

  • 最后两个请求是否应该转到另一个名为ListsController或类似的控制器

  • 客户名单是否应该转到ClientController,股票列表是否应该转到StockController

  • 您认为选择这些选项的好处或理由是什么


    谢谢

    尝试围绕域而不是“边界”对系统进行建模。控制器位于边界上,它们代表您的入口点

    相反,请确保您的域模型不是贫血的。它们应该公开定义良好的操作。TDD在这方面有很大帮助

    一旦您对自己的领域有了很好的了解,您就可以考虑哪些操作真正“值得”向外界公开。然后可以开始添加控制器


    通常情况下,聚合和控制器之间应该有1-1映射,但这可能会根据您正在开发的系统类型而改变。

    好的,但在我解释的示例中,您会选择什么?感谢从API的角度来看,您可能会有这样的情况:-GET/API/v1/clients,返回归档文件-GET/API/v1/clients/123,返回客户机详细信息-POST/API/v1/clients,创建新客户机-PUT/API/v1/clients/123,更新客户机详细信息-DELETE/API/v1/clients/123,在获得API后删除客户机,您可以将任何类型的UI附加到它。在这一点上,它将在很大程度上取决于您的前端选择。