0

我了解到您应该将 MVC-OOD 中的控制器类设置为一个用例,从上到下只使用一种运行 MVC 类的方法。

是否可以在一个控制器中使用不同的方法来获得更多控制和更好的概览?

假设您想运行一个控制器,该控制器将显示一个登录表单(从视图中获取 html 等)。如果用户未登录,同一控制器还将显示注销按钮。这可以通过控制器中的单个方法完成,但使用两种方法似乎更好。如果您想要登录表单,则调用一种方法,如果您想注销按钮,则调用一种方法。(只是一个例子)

那么,专业人士怎么说。每个控制器应该只包含一个“用例”方法,还是可以包含多个?

4

2 回答 2

1

TL;DR——你误解了 MVC 设计模式并且做错了。

控制器不负责呈现界面,也不负责表示逻辑。控制器不显示任何内容。相反,每个控制器的方法处理不同用户的请求。它从所述请求中提取数据并将其传递给模型层和关联的视图。

关于显示什么以及如何显示的决定在视图的范围内。视图包含 MVC 模式中的表示逻辑。在 Web 应用程序的上下文中,视图创建响应。他们可以从多个模板组成一个模板,或者只发送一个 HTTP 标头。

控制器可以通过将请求的某些特定值传递给该视图来向关联视图发出信号,但视图中的大多数决策都是基于视图从模型层中的不同服务请求的信息。

控制器的方法基于用户可以发送的请求类型。例如,在身份验证表单中,它可能是:GET /login和/或POST /login.

于 2012-10-18T15:23:58.387 回答
0

重要的是要记住 MVC 的两件事,首先,它是一个面向对象的架构,其次,它应该用于分离关注点。

关注点分离与抽象有关,它是为了帮助我们理解手头的代码部分。模型和视图都是相关对象的集合/域。每个对象都是完全完整的并且与其领域相关。

您将在视图中找到具有按钮、图像、文本输入等类型的对象,并且您将在模型中找到与业务相关的对象(用户、帐户、配置文件等)。

您的模型中的对象集合往往不会做太多事情,它们需要逻辑将对象连接在一起。(或者简单地将简单的单对象请求委托给正确的对象)

Controller 为您的模型提供接口,并包含与模型相关的业务逻辑以及模型对象之间的交互。您的模型将有一个控制器,并且控制器将有多个与您的用例保持一致的方法。

于 2012-10-18T19:34:27.383 回答