我想问一下,在MVC中为什么需要控制器,为什么不能直接连接模型和视图。如果没有控制器会有什么问题?
MVC是一种软件架构设计模式,通过将代码分离,使其更易读、易维护和易移植。
如果删除控制器,将会有许多缺点。包括但不限于:
您的代码结构将不像MVC中那样清晰。因此,更多的代码将存在于模型中。这样更难以阅读和维护。
代码将失去部分可移植性,例如,您的模型(数据库,文件,数据等)需要包含视图函数、调用和委托等。因此,如果您想要使用相同的模型与不同的UI框架,您需要重写或编辑它。就像将应用从Mac OS X移植到iOS一样。
...
控制器像胶水一样,将模型和视图粘在一起。
控制器是连接“模型”和“视图”的地方。它们属于两个不同的领域、两种不同的语言;视图使用“字符串语言”来表达,而应用程序使用另一种语言(例如Java语言)。
至少需要以下几个功能:
可以隐藏/自动化控制器的某些工作部分;例如声明式验证、从请求中自动创建模型对象,将模型对象绑定到视图层(例如JavaBeans)。
但这并不能替代控制器本身;
控制器不仅仅指我们编写的代码,它还是把一些职责分配到的“逻辑位置”。即使看不见,对于习惯于MVC思想的人来说,它仍然存在。