模型,视图和控制器 - 什么应该创建什么?

2022-09-04 21:43:39

根据良好的编程实践,在程序运行时开始时,应首先创建哪些控制器、模型和视图组件,哪些组件应创建其他两个?

我的意思是,main函数应该首先创建控制器,然后控制器应该同时创建模型和视图,并以某种方式让它们知道自己?

或者我应该从创建视图开始,在显示自身之前,它将初始化控制器,这将创建模型?

或者也许模型应该放在第一位?或者它们都应该在主函数中并行创建?实现 MVC 的正确方法是什么?

编辑:我对一般答案感兴趣,尽管目前我正在使用Java Swing和Windows Phone 7。


答案 1

我会说控制器和模型对象可以通过主函数创建,而视图应该由控制器创建(可能基于模型数据)。

控制器应该由应用程序主函数(工作trhead?等等)创建,每当有新的请求来到应用程序时。请求可能包含一些序列化数据,这些数据可能被主线程反序列化,以创建和填充新的Model对象,这些对象又被传递给控制器进行进一步处理。当控制器完成处理时,它可能会(也可能不)创建一个视图来将处理结果传递给客户端。

控制器还可以创建一个 Model 类来满足数据处理需求(将数据保存到数据库等)或用作返回视图的基础。

总结:

  1. 控制器始终由 main 函数创建
  2. 模型可以通过主函数或控制器创建(也可以通过视图?取决于 MVC 实现)
  3. 视图应由控制器创建(可能基于模型中的数据)。

答案 2

我认为它们中的每一个都可以单独创建。

  • 如果控制器负责创建模型,这意味着没有控制器就无法拥有模型,并且模型和控制器之间始终存在一对一的映射。例如,对于一个网站,您可以为常规数据设置一个控制器,为这些数据的xml版本设置一个控制器(尽管通常这是相同的控制器,您只需指定要使用的协议)。
  • 如果控制器负责创建视图,则以控制器和视图之间的一对一映射结束。控制器只处理传入的请求,执行一些逻辑,并提供答案。它不应该关心谁在要求数据。例如,对于 Web 应用程序,您可以拥有一个 RSS 源和一个 HTML 页面,两者都使用相同的控制器。另一个例子是典型的Rails应用程序,其中一个控制器映射到多个视图(索引视图,显示视图,编辑视图,...

但是,有人有责任将它们全部绑定在一起,但这将是您的主要应用程序,而不是这些组件中的任何一个。


推荐