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

时间:2011-12-04 15:07:10

标签: java model-view-controller

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

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

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

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

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

2 个答案:

答案 0 :(得分:6)

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

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

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

汇总:

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

答案 1 :(得分:4)

我认为每个都可以单独创建。

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