层次
模型(Model) “数据模型”(Model)用于封装与应用程序的业务逻辑相关的数据以及对数据的处理方法。“模型”有对数据直接访问的权力,例如对数据库的访问。“模型”不依赖“视图”和“控制器”,也就是说,模型不关心它会被如何显示或是如何被操作。但是模型中数据的变化一般会通过一种刷新机制被公布。为了实现这种机制,那些用于监视此模型的视图必须事先在此模型上注册,从而,视图可以了解在数据模型上发生的改变。(比较:观察者模式(软件设计模式))
视图(View) 视图层能够实现数据有目的的显示(理论上,这不是必需的)。在视图中一般没有程序上的逻辑。为了实现视图上的刷新功能,视图需要访问它监视的数据模型(Model),因此应该事先在被它监视的数据那里注册。
控制器(Controller) 控制器起到不同层面间的组织作用,用于控制应用程序的流程。它处理事件并作出响应。“事件”包括用户的行为和数据模型上的改变。
优点
在最初的JSP网页中,像数据库查询语句这样的数据层代码和像HTML这样的表示层代码混在一起。经验比较丰富的开发者会将数据从表示层分离开来,但这通常不是很容易做到的,它需要精心地计划和不断的尝试。MVC从根本上强制性地将它们分开。尽管构造MVC应用程序需要一些额外的工作,但是它带给我们的好处是毋庸置疑的。
首先,多个视图能共享一个模型。如今,同一个Web应用程序会提供多种用户界面,例如用户希望既能够通过浏览器来收发电子邮件,还希望通过手机来访问电子邮箱,这就要求Web网站同时能提供Internet界面和WAP界面。在MVC设计模式中,模型响应用户请求并返回响应数据,视图负责格式化数据并把它们呈现给用户,业务逻辑和表示层分离,同一个模型可以被不同的视图重用,所以大大提高了代码的可重用性。
其次,控制器是自包含(self-contained)指高獨立內聚的物件,与模型和視圖保持相对独立,所以可以方便的改变应用程序的数据层和业务规则。例如,把数据库从MySQL移植到Oracle,或者把RDBMS数据源改变成LDAP数据源,只需改变控制器即可。一旦正确地实现了控制器,不管数据来自数据库还是LDAP服务器,视图都会正确地显示它们。由于MVC模式的三个模块相互独立,改变其中一个不会影响其他两个,所以依据这种设计思想能构造良好的少互扰性的构件。
此外,控制器提高了应用程序的灵活性和可配置性。控制器可以用来连接不同的模型和视图去完成用户的需求,也可以构造应用程序提供强有力的手段。给定一些可重用的模型和视图,控制器可以根据用户的需求选择适当的模型机型处理,然后选择适当的的视图将处理结果显示给用户。
分享到:
相关推荐
基于JavaScript MVC模式的Wiki设计与实现 本文主要介绍了基于JavaScript MVC模式的Wiki设计与实现。Wiki系统是一种超文本实现的技术,用以实现超文本系统。该系统支持面向社群的协作式写作,同时也包括一组支持这种...
open-forum-server采用现代Web开发的MVC(Model-View-Controller)架构,核心组件基于Spring Boot框架,这使得系统具备良好的可扩展性和灵活性。同时,其后端数据库通常使用MySQL或PostgreSQL,以支持大规模的数据...
ScrewTurn Wiki是一款开源的、基于.NET框架的轻量级wiki系统,专为中小型企业或团队提供知识管理和协作平台。这个压缩包包含了ScrewTurn Wiki的完整源代码,允许用户根据自身需求进行定制和扩展。 ScrewTurn Wiki的...
ASP.NET的核心组件包括ASP.NET MVC(模型-视图-控制器)、Web Forms、Web API等,本项目可能采用了其中的一种或多种架构。 4. **SQL**:SQL(结构化查询语言)是用于管理关系数据库的标准语言,包括数据查询、数据...
它遵循模型-视图-控制器(MVC)设计模式,旨在使 web 应用程序的开发过程更加简洁、优雅。Laravel 提供了丰富的功能,包括路由、中间件、数据库迁移、Eloquent ORM、任务调度以及强大的艺术化命令行工具(Artisan)...
这个"awesome-wiki"压缩包中的"wiki-master"可能包含了这些主题的详细教程、代码示例和最佳实践。通过这个资源,开发者能够按照自己的需求,系统地学习和探索这些技术,提升自己的专业能力。在开源社区的支持下,...
1. **MVC(Model-View-Controller)架构模式**:这种设计模式将业务逻辑、数据模型和用户界面分离开来,使得代码结构清晰,易于维护。在Yii中,你可以方便地创建控制器来处理HTTP请求,模型来处理数据,以及视图来...
WebWork 是一个基于Java的MVC(模型-视图-控制器)框架,它在早期的Web开发中扮演了重要角色,特别是在Struts1之后。WebWork由James G. Till所创建,其设计理念是提供更灵活、更强大的MVC实现,以解决Struts1的一些...
"Chiki Wiki-开源"是一个基于Java技术的Wiki系统实现,旨在提供类似Wiki的功能,并在此基础上进行了大量的扩展和创新。Wiki是一种协作式的网络平台,允许用户轻松创建、编辑和链接网页,以共同构建知识库。在Chiki ...
- 使用 `dev-wiki-master` 文件夹中的源代码,开发者可以克隆、安装依赖并运行项目,部署在本地或服务器上。 - 通过 npm(Node.js 包管理器)进行依赖安装和项目构建,例如:`npm install` 和 `npm start` 命令。 ...
Spring框架是Java企业级应用的事实标准,提供了依赖注入、AOP(面向切面编程)、MVC(模型-视图-控制器)架构模式等。 除了后端开发,My-Wiki可能也会涉及Java的前端技术,如JavaFX或Swing,它们用于构建桌面应用...
《深入解析Wiki-WildWolf:野狼队开源网站源码》 在当今互联网技术日新月异的时代,开源系统已经成为推动技术进步的重要力量。"Wiki-WildWolf",这个源自野狼队的开源项目,正是其中的一颗璀璨明星。本文将深入探讨...
为了实现良好的代码组织和解耦,该Wiki系统可能采用了Model-View-Controller(MVC)设计模式。Model负责数据处理,View负责显示,Controller负责协调Model和View的交互。 5. **用户认证与授权** Wiki系统需要对...
OSNET-开源ASP.NET MVC CMS快速入门http://osnetcms.com/wiki/quickstart/源代码位于https://osnetcms.codeplex.com/SourceControl/latest
wiki-down 是一个基于 Markdown 的 wiki,基于 .NET 和 MongoDB。 可能有一些 NodeJS - 陪审团还在外面...... ###特征 一个内容存储 - 多个站点 一份 Markdown 文档 - 多种输出和格式 Markdown 在客户端和服务器...
"wiki-courses-backend" 是一个基于Java技术栈的后端项目,主要功能是为学生提供一个平台来浏览和下载教师的课程资料。该项目是作者在亚丁大学工程学院信息技术系的毕业设计,因此我们可以推断这是一个实践性的、...
1. **MVC架构**:ScrewTurn Wiki很可能采用了ASP.NET MVC框架,这是一种轻量级的开发模式,它将应用程序分为模型、视图和控制器三个部分,使得代码结构清晰,便于维护和测试。通过控制器处理用户请求,模型管理业务...
3. **应用程序框架**:提供了一个基于MVC(模型-视图-控制器)的开发环境,允许用户创建自定义应用。 4. **安全框架**:实现了用户认证、授权和访问控制,确保系统的安全性。 5. **扩展机制**:通过插件和宏系统,...
在源码分析方面,通过阅读`khpai-v0.0.1-beta`中的文件,可以深入理解PHP框架的构建、MVC(模型-视图-控制器)架构的应用、数据库交互以及用户认证和权限管理等关键概念。对于毕业设计的学生来说,这是一个很好的...