MVC全名是Model View Controller,即模型-视图-控制器的缩写,一种软件设计典范,用一种业务逻辑,数据,界面显示分离方法组织代码,

    将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。

  Model :表示应用程序核心,企业数据和业务规则(数据库记录列表)。是应用程序中用于处理应用程序数据逻辑的部分,通常模型对象负责在数据库中存取数据

    在MVC的三个部件中,模型拥有最多的处理任务,由于应用模型的代码只需写一次就可以被多个视图重用,所以减少了代码的重复性。

  View:是用户看到并与之交互的界面,显示数据(数据库记录)。是应用程序中处理数据显示的部分。

    通常视图是依据模型数据创建的,MVC好处是它能为应用程序处理很多不同的视图。在视图中并没有真正的处理发生

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

    控制器接受用户的输入并调用模型和视图去完成用户的需求,控制器本身不输出任何东西和做任何处理。

    它只是接收请求并决定调用哪个模型构件去处理请求,然后再确定调用哪个视图来显示返回的数据

  MVC分层有助于管理复杂的应用程序,同时也简化了分组开发。最典型的MVC就是JSP+serviet+javabean的模式

  特点1:耦合性低

    视图层和业务层分离,这样就允许更改视图层代码而不用重新编译模型和控制器代码,同样,一个应用的业务流程

      或者业务规则的改变只需要改动MVC的模型层即可。因为模型与控制器和视图相分离,所以很容易改变应用程序的数据层和业务规则

  特点2:重用性高

    MVC模式允许使用各种不同样式的视图来访问同一个服务器端的代码,因为多个视图能共享一个模型,所以同样的构件能被不同的界面使用。

  特点3:生命周期成本低

    MVC使开发和维护用户接口的技术含量降低。

  特点4:可维护性高

    分离视图层和业务逻辑层也使得web应用更易于维护和修改。

  MVC和C++编程中典型的三层架构之间的区别

    三层架构是UI(界面)-BLL(业务处理)-DAL(数据处理);MVC即Model-View-Control,

    共同点:三层架构的UI层相当于MVC中的View,

    区别:三层架构中的BLL和DAL层相当于MVC中的Model层,Model层实现系统中的业务逻辑,当然也包括了数据访问的逻辑,

      区别比较大的是三层架构中没有Control层,而是由单个界面上的控件直接处理页面于业务逻辑之间的关系,

      MVC中的control层是作为联系视图层和模型层的纽带,使得整个项目的结构更加清晰,降低了耦合性。

  MVC模式为什么并不是一种设计模式?

    Gof(Gang of Four),四人组,《Design Patterns: Elements of Reusable Object-Oriented Software》/《设计模式》一书的作者:Erich Gamma、

  Richard Helm、Ralph Johnson、John Vlissides)并没有把MVC提及为一种设计模式,而是把它当做“一组用于构建用户界面的类集合”。在他们看来,它其实

  是其他三个经典的设计模式的演变:观察者模式,策略模式和组合模式。根据MVC在框架中的实现不同可能还会用到工厂模式和装饰器模式

    

MVC框架初识的更多相关文章

  1. .NET轻量级MVC框架:Nancy入门教程(一)——初识Nancy

    当我们要接到一个新的项目的时候,我们第一时间想到的是用微软的MVC框架,但是你是否想过微软的MVC是不是有点笨重?我们这个项目用MVC是不是有点大材小用?有没有可以替代MVC的东西呢?看到这里也许你会 ...

  2. 初识MVC框架

    MVC框架 是一个框架模式,它使应用程序的输入.处理和输出分开.它可以使业务逻辑.数据.界面显示分离,使得耦合度大大降低,在这一方面与"三层"思想类似.      M--Model ...

  3. .NET轻量级MVC框架:Nancy入门教程(二)——Nancy和MVC的简单对比

    在上一篇的.NET轻量级MVC框架:Nancy入门教程(一)——初识Nancy中,简单介绍了Nancy,并写了一个Hello,world.看到大家的评论,都在问Nancy的优势在哪里?和微软的MVC比 ...

  4. 开源:Taurus.MVC 框架

    为什么要创造Taurus.MVC: 记得被上一家公司忽悠去负责公司电商平台的时候,情况是这样的: 项目原版是外包给第三方的,使用:WebForm+NHibernate,代码不堪入目,Bug无限,经常点 ...

  5. 编写自己的PHP MVC框架笔记

    1.MVC MVC模式(Model-View-Controller)是软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(Model).视图(View)和控制器(Controller). ...

  6. 转 10 个最佳的 Node.js 的 MVC 框架

    10 个最佳的 Node.js 的 MVC 框架 oschina 发布于: 2014年02月24日 (33评) 分享到:    收藏 +322 Node.js 是一个基于Chrome JavaScri ...

  7. 制作自己的MVC框架(一)——简单粗暴的实现

    现在市面上有很多成熟的MVC框架,可以拿来直接用,但自己造一下轮子其实也挺有意思的. 下面先来看个最简单粗暴的MVC实现. 5个文件就能实现最简单的MVC,在Apache中设置一个虚拟目录,配置个简单 ...

  8. 分享一实战性开源MVC框架<Linux、Windows跨平台开发so easy>

    一.引子   开源地址 https://github.com/564064202/Moon.Mvc 欢迎加入开发 .NET Core微软还在发力,但作为商用还有一段距离,很多开发库尚不能用于.NET ...

  9. 产品前端重构(TypeScript、MVC框架设计)

    最近两周完成了对公司某一产品的前端重构,本文记录重构的主要思路及相关的设计内容. 公司期望把某一管理类信息系统从项目代码中抽取.重构为一个可复用的产品.该系统的前端是基于 ExtJs 5 进行构造的, ...

随机推荐

  1. kafka8 编写简单消费者

    1.eclipse运行消费者代码.代码如下 package cn.test.mykafka; import java.util.Arrays; import java.util.Properties; ...

  2. react 中的return 什么时候用小括号,什么时候用大括号啊

    return( <div>....</div> ) return( <Component/> ) return{...} 1:html 2:react 组件 3:j ...

  3. Python学习之数组类型一:

    Python学习之数组类型一: Numpy中的向量与矩阵: 1.创建:  向量.矩阵均由array函数创建,区别在于向量是v=array( [逗号分隔的元素] ), 矩阵是M=array( [[ ]] ...

  4. vue2Leaflet使用 Vue2Leaflet-master 的demo

    首先下载该demo 地址:https://github.com/KoRiGaN/Vue2Leaflet 下载后可以运行里面的例子,在examples文件夹内,该文件夹本身就是一个完整的项目 然后cmd ...

  5. Java访问修饰符(访问控制符)

    Java 通过修饰符来控制类.属性和方法的访问权限和其他功能,通常放在语句的最前端.例如: public class className { // body of class } private bo ...

  6. java.lang.RuntimeException: wrong class format Caused by: org.eclipse.jdt.internal.compiler.classfmt.ClassFormatException: null

    Spring Boot 启动的时候报的错 使用Drools 5.6版本,Spring Boot1.5.8版本,JAVA8版本,Eclipse4.4.2版本. Google后在Stack上发现一个,中文 ...

  7. binlog的原理

  8. Java Networking: UDP DatagramSocket (翻译)

    原文:http://tutorials.jenkov.com/java-networking/udp-datagram-sockets.html UDP vs. TCP Sending Data vi ...

  9. conda环境py36 requirements.txt

    生成: conda list -e > requirements.txt 使用: conda install --yes --file requirements.txt # This file ...

  10. 使用Flask部署机器学习模型

    Introduction A lot of Machine Learning (ML) projects, amateur and professional, start with an aplomb ...