mvc设计模式和mvc框架的区别

一组概念需要先理解,因为后面需要用:

  架构:简单的说架构就是一个蓝图,是一种设计方案,将客户的不同需求抽象成为抽象组件,并且能够描述这些抽象组件之间的通信和调用。

  框架:软件框架是项目软件开发过程中提取特定领域软件的共性部分形成的体系结构,不同领域的软件项目有着不同的框架类型。框架不是现成可用的应用系     统。而是一个半成品,提供了诸多服务,开发人员进行二次开发,实现具体功能的应用系统。

  设计模式:是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结,它强调的是一个设计问题的解决方法。

 

首先来说说MVC设计模型:

1.定义:MVC 设计模型是一种使用 Model View Controller( 模型-视图-控制器)设计创建 Web 应用程序的模式。

  由上主谓宾可以很容易看出,mvc模型是一种用来写web应用程序的样式,也就是说只能写web不能写其它?

2.既然使用了 Model View Controller( 模型-视图-控制器),那么就很有必要来介绍一下该(模型-视图-控制器)到底是怎样的一个东西?

 

Model(模型):是应用程序中用于处理应用程序数据逻辑的部分。

    通常模型对象负责在数据库中存取数据。

 

View(视图):是应用程序中处理数据显示的部分。
    通常视图是依据模型数据创建的。

 

Controller(控制器):是应用程序中处理用户交互的部分。
    通常控制器负责从视图读取数据,控制用户输入,并向模型发送数据。

 

再来说说MVC框架:

1.MVC框架,它强制性的使应用程序输入、处理和输出分开。使用MVC应用程序被分成三个核心部件:模型、视图、控制器。它们各自处理自己的任务。

  由上可知,要使用MVC框架,则一定要遵守该框架的规则,它有它的强制性所在。聪明的读者一看就知道,它所使用的三个核心部件其实都是来自MVC模型。

  只不过在框架中让他们彼此更加独立了去处理各自的任务而已。

2.最典型的MVC就是JSP + servlet + javabean的模式。

3. 视图:视图是用户看到并与之交互的界面。视图主要有元素HTML ,Adobe Flash,XHTML,XML/XSL,WML等一些标识语言和Web services。

模型:模型表示企业数据和业务规则。

控制器:控制器接受用户的输入并调用模型和视图去完成用户的需求,所以当单击Web页面中的超链接和发送HTML表单时,控制器本身不输出任何东西和做任何处理。它只是接收请求并决定调用哪个模型构件去处理请求,然后再确定用哪个视图来显示返回的数据。

 

 

设计模型和框架的区别:(注意这里首先讨论的是总概念!)

先来看看网上给的区别,来自百度百科的:

在软件生产中有三种级别的重用:内部重用(即在同一应用中能公共使用的抽象块),代码重用(即将通用模块组合成库或工具集,以便在多个应用和领域都能使用),应用框架的重用(即为专用领域提供通用的或现成的基础结构,以获得最高级别的重用性)。

框架通常是代码重用,而设计模式是设计重用(?设计重用怎么来的?上下都没它的定义,百科垃圾就在这里。),架构则介于两者之间。

设计模式是对在某种环境中反复出现的问题以及解决该问题的方案的描述,它比框架更抽象;框架可以用代码表示,也能直接执行或复用,而对模式而言只有实例才能用代码表示;设计模式是比框架更小的元素,一个框架中往往含有一个或多个设计模式,框架总是针对某一特定应用领域,但同一模式却可适用于各种应用。可以 说,框架是软件,而设计模式是软件的知识。

百科的回答往往缺乏严谨,我在MBR lib网站中看到它们将软件重用分类为:产品重用/知识重用/环境重用

框架是代码重用,所以我们在使用框架的时候总是引入很多包。

框架是软件,而设计模式是软件的“知识”。所以模式是框架的基础。

 

再回到MVC这个小概念上来:

根据框架和设计模式的大概念,我们应该可以知道MVC框架和MVC设计模式区别的一二了。

以我的理解,觉得MVC设计模式更像设计师手中的图纸(图纸上的东西往往更抽象),而MVC框架则更像是工程师以设计师的图纸而建造的产品!

最终的产品也许比设计师原来的图纸有所出入,有些功能有所增强,有些又会适当的减弱,以此来更加适应大众的需求和体验!但是在整体上和本质上都是遵循设计师的构造的。

MVC设计模式就像建设房子的基础(地基设计+结构设计+强弱电设计+消防设计+etc),而MVC框架则可在此基础上根据需求构建的漂亮的成品房。

 

常见的框架和设计模型(注意这是大概念)

 

设计模式有哪些?

 MVC、MTV、MVP、CBD、ORM等等;

 

框架有哪些?

 C++语言的QT、MFC、gtk

Java语言的SSH 、SSI

php语言的 smarty(MVC模式)

python语言的django(MTV模式)等等

转载于:https://my.oschina.net/wf1994/blog/686370

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/284514.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

新型基础测绘与实景三维中国建设技术文件【4】基础地理实体数据元数据

基础地理实体数据是新型基础测绘产品体系中的核心成果,为实现该数据的规范化管理和使用,编制基础地理实体数据元数据技术文件。本文件规定了基础地理实体数据元数据的基本要求和元数据内容,适用于二维表达形式、三维表达形式基础地理实体数据…

思科三层交换机充当路由器实现全网互通

转载于:https://blog.51cto.com/13568840/2059797

剑指offer编程题Java实现——面试题3二维数组中的查找

题目描述 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。下面是我实现的代码,修改下类名(…

mpvue开发小程序分享朋友圈无法自定义标题解决方法

在node_modules里面找到mpvue,手动修改一下mpvue这个包下的index.js文件 // 用户点击右上角分享 到朋友圈 onShareTimeline: rootVueVM.$options.onShareTimeline? function (options) { return callHook$1(rootVueVM, onShareTimeline, options); } : null,找到 L…

【ArcGIS Pro微课1000例】0020:ArcGIS Pro中河流(曲线)、湖泊(水体色)图例制作案例教程

相关阅读:【ArcGIS微课1000例】0032:ArcGIS中河流(曲线)、湖泊(水体色)图例制作案例教程 河流、湖泊的样式设置功能在ArcGIS Pro得到了延续,本文讲解ArcGIS Pro中河流湖泊图例的设置方法。 《ArcGIS Pro从入门到精通系列精品教程(微课版)》专栏包括完整的实验数据包,…

swift学习选pizza项目

2019独角兽企业重金招聘Python工程师标准>>> 原文: https://makeapppie.com/2014/09/18/swift-swift-implementing-picker-views/ 效果: 步骤: 新建iOS single view application 名字为SwiftPickerViewPizzaDemo, 打开main storyboard选中view controoler, 右上角, …

Windows 11 新版 25163 推送!任务栏全新菜单、应用商店更新、文件资源管理器大量修复...

面向 Dev 频道的 Windows 预览体验成员,微软现已推送 Windows 11 预览版 Build 25163。主要变化1.微软宣布为 Windows 11 任务栏引入全新溢出体验,当任务栏上的应用程序图标或窗口达到任务栏容量上限时,将启用全新溢出菜单。2.微软更新了 Mic…

shell中source与sh区别

shell中使用source conf.sh,是直接运行conf.sh的命令,不创建子shell,类似与html中include,而sh是则创建子shell,子shell里面 的变量父shell无法使用,对环境变量的修改也不影响父shell。父shell中的局部变量…

[转]Web3 是去中心化的“骗局”?

作者 | InvisibleUp 译者 | 弯月 出品 | CSDN(ID:CSDNnews) Web3 不是去中心化。 虽然我觉得这一点很明显,根本不需要通过一篇文章来说明,但我也是迫不得已,因为突然之间各大科技巨头,比如 Redd…

实景三维建设背景下,三维GIS面临哪些挑战?

2021年8月26日,自然资源部印发《实景三维中国建设技术大纲(2021版)》,明确指出“实景三维中国建设是落实数字中国、平安中国、数字经济战略的重要举措,是落实国家新型基础设施建设的具体部署,是服务生态文明…

无需编码,自动实现“异步 Request-Reply”模式

前言上次,我们虽然用代码实现了“异步 Request-Reply 模式”,但是需要为每一个长时间操作 API 实现一个对应的 AsyncXXX 操作。其实,可以尝试用 Source Generators 减少这种重复性劳动。实现思路Controller 类必须是partial,这样才能为它额外…

Kotlin Weekly 中文周报

Kotlin Weekly 中文周报 —— 25 Kotlin 开发中文周报 文章 使用 Kotlin 中的 takeIf (zhuanlan.zhihu.com) 在 Kotlin 的标准函数中有个 takeIf 函数,你是否了解这个函数呢?它是否只是漂亮点的 if 语句呢? Kotlin 的…

第一次玩,试试手(标题)

Hello Blog!!转载于:https://blog.51cto.com/10999994/1786094

【CASS精品教程】CASS9.1生成标准图幅案例教程

在CASS中,可以很方便的生成标准图幅,如50*50。本文演示cass中,根据测区范围标准图幅生成过程。 一、图幅预览: 二、图幅生成 打开测区范围,如下图所示: 点击【绘图处理】→【批量分幅】→【格网建立】,如下图所示: 选择比例尺500,直接回车。 选择图幅50*50。 根据测区…

[转]mpvue中的小程序调用系统自带查看图片的功能

mpvue中的小程序调用系统自带查看图片的功能 这里举个栗子&#xff1a; <template><div class"keting"><div class"centsimg dja"><swiper:current"curr"display-multiple-items"1"next-margin"0rpx"c…

隐马尔科夫

前向、后向算法解决的是一个评估问题&#xff0c;即给定一个模型&#xff0c;求某特定观测序列的概率&#xff0c;用于评估该序列最匹配的模型。Baum-Welch算法解决的是一个模型训练问题&#xff0c;即参数估计&#xff0c;是一种无监督的训练方法&#xff0c;主要通过EM迭代实…

去创业公司不能有一夜暴富的侥幸,更不能指望掉馅饼

为了实现财务自由&#xff0c;去创业公司是一个不错的选项&#xff0c;我自己也去过创业公司&#xff0c;身边的朋友也有不少去过或正在创业公司里干&#xff0c;我就结合下我经历过的和我看到的&#xff0c;说下我的感受。 1 该去哪种类型的创业公司 第一&#xff0c;这个公司…

分布式日志收集系统 - ExceptionLess的安装、配置、使用

前言Exceptionless 是一个开源的实时的日志收集框架&#xff0c;它可以应用在基于 ASP.NET&#xff0c;ASP.NET Core&#xff0c;Web API&#xff0c;Web Forms&#xff0c;WPF&#xff0c;Console&#xff0c;ASP.NET MVC 等技术开发的应用程序中&#xff0c;并且提供了REST接…

[转]使用npm发布vue组件

&#x1f636; NPM 是随同 NodeJS 一起安装的 javascript 包管理工具&#xff0c;能解决 NodeJS 代码部署上的很多问题 发布前的准备 注册一个 npm 账号 前往 NPM 官网进行注册 初始化项目 这里用的是webpack-simple,可以理解为精简版的vue-cli。 如果没有全局安装 vue 的话&am…

[置顶]tcpflow 抓包

转自&#xff1a; http://www.rwifeng.com/jekyll/update/2015/04/16/how-to-tcpflow/ tcpflow 抓包 Apr 16, 2015 大家都知道 tcpdump 是一个很方便的抓包工具&#xff0c; 但是 tcpdump 是以包为单位进行输出的&#xff0c;阅读起来不是很方便。 而 tcpflow 是面向 TCP 流的…