MVC的变体
通过采用MVC模式我们可以将可视化UI元素的呈现UI处理逻辑和业务逻辑分别定义在ViewController和Model中但是对于三者之间的交互MVC并没有进行严格的限制最为典型的就是允许View和Model绕开Controller进行直接交互View可以通过调用Model获取需要呈现给用户的数据Model也可以直接通知View让其感知到状态的变化当我们将MVC应用于具体的项目开发中不论是基于GUI的桌面应用还是基于Web UI的Web应用如果不对ModelView和Controller之间的交互进行更为严格的限制我们编写的程序可能比自治视图更加难以维护
今天我们将MVC视为一种模式(Pattern)但是作为MVC最初提出者的Trygve M H Reenskau却将MVC视为一种范例(Paradigm)这可以从它在Applications Programming in Smalltalk(TM)How to use ModelViewController (MVC)中对MVC的描述可以看出来In the MVC paradigm the user input the modeling of the external world and the visual feedback to the user are explicitly separated and handled by three types of object each specialized for its task
模式和范例的区别在于前者可以直接应用到具体的应用上而后者则仅仅提供一些基本的指导方针在我看来MVC是一个很宽泛的概念任何基于ModelView和Controller对UI应用进行分解的设计都可以成为MVC当我们采用MVC的思想来设计UI应用的时候应该根据开发框架(比如Windows FormsWPF和Web Forms)的特点对ModelView和Controller的界限以及相互之间的交互设置一个更为严格的规则
在软件设计的发展历程中出现了一些MVC的变体(Varation)它们遵循定义在MVC中的基本原则我们现在来简单地讨论一些常用的MVC变体
返回目录ASPNET MVC 框架揭秘
编辑推荐
Java程序性能优化让你的Java程序更快更稳定
Visual C++音频/视频技术开发与实战