目录
- 1层次
- 2实现
- 2.1MFC
- 2.2.NET
- 2.2.1 ASP.NET
- 2.2.2 Windows Forms
- 2.3Java
- 2.3.1 Java 平台企业版 (J2EE)
- 2.3.2 Java Swing
- 2.4 Ruby
- 2.5 Python
- 2.6 JavaScript
- 2.7PHP
层次
模型(Model) “数据模型”(Model)用于封装与应用程序的业务逻辑相关的数据以及对数据的处理方法。“模型”有对数据直接访问的权利,例如对数据库的访问。“模型”不依赖“视图”和“控制器”,也就是说,模型不关心它会被如何显示或是如何被操作。但是模型中数据的变化一般会通过一种刷新机制被公布。为了实现这种机制,那些用于监视此模型的视图必须事先在此模型上注册,从而,视图可以了解在数据模型上发生的改变。(比较:观察者模式(软件设计模式)) 视图(View) 视图层能够实现数据有目的的显示(理论上,这不是必需的)。在视图中一般没有程序上的逻辑。为了实现视图上的刷新功能,视图需要访问它监视的数据模型(Model),因此应该事先在被它监视的数据那里注册。 控制器(Controller) 控制器起到不同层面间的组织作用,用于控制应用程序的流程。它处理事件并作出响应。“事件”包括用户的行为和数据模型上的改变。实现
MFC
微軟所推出的MFC Document/View架構是早期對於MVC實作,MFC將程式分成CView以及CDocument兩大類別,其中的Document对应MVC中的Model,View相当于MVC中的View+Controller,再加上CWinApp類別,合成三大項。但是基本上MFC是一個失敗的MVC作品。 由於MFC之下的Document/View定義過於模糊,未將Controller(MessageMap)部份取出,因此Controller可以置入View或Document,但不管置入哪一方面,都會與View或Document綁死,沒有彈性。.NET
ASP.NET
在ASP.NET中,针对视图(View)和控制器(Controller)的模式没有被很好地定义。而模型(Model)则留给开发者去设计。 视图(View) ASPX和ASCX文件被用来处理视图的职责。在这个设计中视图实际上是从控制器继承而来。这个和Smalltalk的实施有所不同,在Smalltalk中不同的类都有指针互相指向对方。 控制器(Controller) 控制器的职责被分割成两部分。事件(Event)的产生和传输是框架的一部分,更明确的说是Page和Control两个类。而事件的处理则在分离的代码中实现。 模型(Model) ASP.NET 不严格需要一个模型。开发者可以自行选择创建一个模型类,但是很多人选择放弃这一步,直接把事件处理放在控制器里处理任何计算、数据保存等等。但用模型来包含商业逻辑和数据存取是可实现的。Windows Forms
在WinForms中,这个针对视图(View)和控制器(Controller)的模式已经很好的定义好的。而模型(Model)则留给开发者去设计。 视图(View) 由Form或者Control类继承来的一个类处理视图的职责。在WinForm这个例子中视图和控制器被编译在同一个类中,这个和ASP.NET不同。 控制器(Controller) 控制器的职责被分割成三部分。事件(Event)的产生和传输是操作系统的一部分。在.Net框架中Form和Control类将不同的事件转发给相应的事件处理器。而事件的处理则在分离的代码中实现。 模型(Model) 就像ASP.NET一样,WinForm不严格需要一个模型。开发者可以自行选择创建一个模型类,但是很多人选择放弃这一步,直接把事件处理放在控制器里处理任何计算、数据保存等等。也就是说用模型来包含商业逻辑和数据存取。Java
Java 平台企业版 (J2EE)
和其他的各种框架不一样,J2EE为模型对象(Model Objects)定义了一个规范。 视图(View) 在J2EE应用程序中,视图(View)可能由Java Server Page(JSP)承担。生成视图的代码则可能是一个servlet的一部分,特别是在客户端服务端交互的时候。 控制器(Controller) J2EE应用中,控制器可能是一个servlet。 模型(Model) 模型则是由一个实体Bean来实现。Java Swing
Ruby
- Ruby on Rails是透過Ruby語言所開發出來的Web Framework,也是採用Model-View-Controller架構。
Python
- Python 有許多的 MVC 架構。最常用的有 Django 和 TurboGears。
JavaScript
- Model-View-Controller (MVC) with JavaScript
PHP
- The Model View Controller Framework for PHP Web Applications
《ASP.NET下MVC设计模式的实现领悟》
《Web设计模式》