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

lam*_*pak 12 java model-view-controller

根据良好的编程习惯,在程序运行时开始时,应首先创建哪个Controller,Model和View组件,哪些应该创建另外两个?

我的意思是,如果主函数首先创建控制器,那么控制器应该创建模型和视图并以某种方式使它们自己为人所知?

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

或者模型应该先出现?或者它们都应该在main函数中并行创建?实施MVC的正确方法是什么?

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

Ser*_*sev 7

我会说Controller和Model对象可以由main函数创建,而View应该由Controller创建(可能基于Model数据).

每当有新的请求到应用程序时,控制器应该由应用程序主要功能(工作trhead?无论如何)创建.请求可能包含一些序列化数据,这些数据可以由主线程反序列化以创建和填充新的Model对象,然后将其传递给Controller进行进一步处理.当控制器完成处理时,它可能(或可能不)创建视图以将处理结果传递给客户端.

Controller还可以创建Model类来满足数据处理需求(将数据保存到数据库等)或作为返回View的基础.

总结:

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

  • 如果控制器负责创建视图,那么您将如何处理同一模型/控制器组合的多个视图?控制器和视图应该就接口级别如何在它们之间传递数据达成一致,但连接视图和控制器不一定要包含在其中任何一个中. (3认同)

Rob*_*bin 5

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

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

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