【问题标题】:How to 'introduce' view & controller in MVC pattern?如何在 MVC 模式中“引入”视图和控制器?
【发布时间】:2011-03-07 01:22:49
【问题描述】:

在桌面应用程序中使用 MVC 模式,将视图引入其各自控制器的好方法是什么,反之亦然?例如,您是否应该使用构造函数注入来为视图提供其控制器,然后让视图在控制器上调用 setView 方法并将自身作为参数传递?

(问题不针对任何框架/平台。)

【问题讨论】:

    标签: model-view-controller user-interface desktop


    【解决方案1】:

    视图应该尽可能的愚蠢。他们不应该知道或依赖于让特定的控制器实例化它们。充其量他们应该有权访问在构造时传递给他们的某种基本控制器类引用,通常作为包装要使用的模型的“视图数据”对象的一部分。

    您的控制器应该负责实例化视图,为视图提供将要显示的模型,并返回视图的结果。视图不应该回调控制器来告诉它要返回什么,因为这将控制逻辑流给了视图,这并不是真正的 MVC。

    【讨论】:

    • 谢谢!关于第一部分,您何时希望为视图提供基本控制器类引用,而不仅仅是模型?
    • 你会给它两个。根据您的实现,它不会需要给它一个控制器引用,但通常控制器可以访问您的视图可能需要的初始请求数据。例如,在 ASP.Net MVC 中,每个视图都会传递一个模型,但也有一个众所周知的结构,称为“ViewData”,它包含一个“ControllerContext”对象,如果您的视图需要在请求数据中四处寻找,您可以访问该对象.
    • 那么,比如说,在 GUI 应用程序中,按钮单击命令如何到达此设置中的模型?按钮不是视图(窗口等)的一部分吗?
    猜你喜欢
    • 1970-01-01
    • 2011-09-12
    • 2014-12-09
    • 2015-05-20
    • 1970-01-01
    • 1970-01-01
    • 2018-02-08
    • 2016-10-24
    • 2018-05-24
    相关资源
    最近更新 更多