控制器,视图特定或模型特定?

时间:2013-11-21 19:29:10

标签: design-patterns model-view-controller view model controller

有人可以用我的问题指出我正确的方向。我对综合文章和易读的mvc模式和设计模式的书籍感兴趣。

很多人说控制器只是模型和视图之间的“胶水”(在每篇文章中双引号似乎都是解释的非常重要的部分)。它并没有过多地讲述控制器的概念。

我的问题是:您认为控制器更具特定于模型或视图特定吗?为什么?

在我目前看来,他们都有自己的逻辑,可以包装在他们自己的控制器中。其他只是视图特定控制器,其次是模型特定控制器。

提前致谢!

2 个答案:

答案 0 :(得分:1)

视图和控制器被认为是MVC架构模式中同一层的一部分。正确实现的MVC应用程序有两层:表示层和模型层。

你应该开始的文章是Folwer的“GUI Architectures”。它应该涵盖基础知识。

  

很多人都说控制器只是模型和视图之间的“胶水”(在每篇文章中双引号似乎都是解释的重要部分)。

是的,嗯......他们错了。

MVC架构中的控制器负责更改模型层的状态(在少数情况下,当前视图通常在桌面应用程序中)。一般来说,他们没有从模型层收到任何信息,因此 - 没有“粘合”发生。

  

注意:存在控制器观察模型层的实现,用于改变控制器的行为方式,但这仅适用于模型层持久的系统。例如:具有双因素身份验证的联网桌面应用程序 - 当用户通过身份验证时,现有控制器开始与模型层中的不同服务进行交互。

您应该查看MVC的wiki页面。特别是图表。

回答您的主要问题:

控制器更具视图特性,因为用户与一个特定UI(由某个视图生成)的交互也将主要由一个特定的控制器处理。

但是,用户对特定控制器的“信号”可以基于不同的UI。例如,带有json响应的REST API用于列出所有用户 VERSUS 具有相同用户列表的HTML页面 - 不同视图,相同的控制器。

P.S。:很遗憾,您的主要语言似乎是JS,我没有其他帖子可以链接到。也许除this answer之外。它可以帮助你理解表示层,你可以忽略包含PHP的“主观位”。

MVC控制器中的

P.P.S: 不包含应用程序逻辑。相反,应用程序逻辑应该包含在服务中,这些服务是模型层的一部分。

答案 1 :(得分:-2)

控制器应该包含应用程序的业务逻辑,并且不应该知道模型或视图(不仅仅是它需要)。这个想法是它应该松散耦合以便可以重复使用(在其他项目中),原理与SOLID编程的接口隔离原则相同,并且GUI需要更频繁地更新或定制的想法基础模型使两者脱钩,使事情更易于遵循和组织。

这是我第一次向我介绍mvc: http://apcentral.collegeboard.com/apc/members/courses/teachers_corner/185168.html并且在一个很好的小包装中很好地解释了IMO。

对于MVC的js方法,请查看https://developer.chrome.com/apps/app_frameworks