谈谈对MVC的理解(View+Model+Controller)
1) 什么是MVC?
MVC是一种设计思想,根据职责不同将程序中的组件分成以下3个部分。
V(View视图):负责与用户交互。将数据展现,或者是接收数据
M(Model模型):负责业务处理。业务模型,数据模型
C(Controller控制器):负责协同模型和视图工作。视图有请求调用模型处理,模型处理完毕调用视图响应。
2)为什么使用MVC?
MVC是一个非常优秀的设计思想,基于该思想架构程序,可以提高程序的结构灵活性,便于日后维护、扩展和升级。
注意,下面内容助于理解:
1) 一个模型可以被多个视图共享模型只负责输出数据,不关心数据的表现形式,同一仹数据,可以使用多个不同的视图展现给用户。模型只负责处理数据,不关心是谁在调用,可以使用多种不同的界面来调用模型。
2) 方便测试
模型一般使用java 类来开发,在开发完成之后,可以立即测试。如果业务逻辑直接写在servlet
里面,则需要部署在服务器上面才能测试,比较麻烦。
3) 组件复用
控制器可以做成一个通用的模块。
4) 代码好维护,利于分工协作。
按照 mvc 的思想,可以对程序迚行分层,一般划分成表示层(包括 v,c)、业务层(m中的业务逻辑部分)、持久层(m中的数据访问逻辑部分)。下一层的代码发生改变,只要接口不变,不会影响到上一层的代码。
mvc的缺点
1) 采用 mvc 以后,会增加代码量,相应的开发周期以及开发的成本会相应增加。
2) 使用 mvc,需要良好的设计。如果设计不当,会增加开发的难度。
结论
一般来说,如果一个程序需要良好的架构,需要良好的代码的可维护性及可扩展性,需要使用mvc
思想来架构。反之,则不必使用。
谈谈对MVC的理解(View+Model+Controller)相关推荐
- (四) View/Model 全解(mvc)
转自:http://www.cnblogs.com/zhangziqiu/archive/2009/03/18/Aspnet-MVC-4.html 一.摘要 本文讲解在Action中向View传递Mo ...
- MVC 各种传值方式 ASP.NET MVC view与controller传值方式
MVC 各种传值方式 ViewData传值. HomeController.cs Co de: public ActionResult Index() { ViewData["T ...
- MVC的全名是Model View Controll
MVC的全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,是一种软件设计典范.它是用一种业务逻辑.数据与界面显示分离的方法 ...
- Asp.Net Core 入门(四)—— Model、View、Controller
和我们学习Asp.Net MVC一样,Asp.Net Core MVC的Model.View.Controller也和我们熟悉的Asp.Net MVC中的相似.不同的是我们在使用Asp.Net Cor ...
- Model、View和Controller简介
Model.View和Controller简介 Model主要是存储或者是处理数据的组件,Model其实是指要处理的业务处理和数据操作代码,如:CRUD(Create/Read/Update/Dele ...
- [ASP.NET MVC 小牛之路]10 - Controller 和 Action (2)
继上一篇文章之后,本文将介绍 Controller 和 Action 的一些较高级特性,包括 Controller Factory.Action Invoker 和异步 Controller 等内容. ...
- 谈谈对MVVM的理解
谈谈对MVVM的理解 什么是MVVM 不管是MVC,MVP,或者MVVM,都是常见的软件架构设计模式(Architectural Pattern),它通过分离关注点来改进代码的组织方式.不同于设计模式 ...
- MVC的理解和优缺点的总结
概念: MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务数据.逻辑.界面显示分离的方 ...
- 【ASP.NET MVC 学习笔记】- 10 Controller和Action(1)
本文参考:http://www.cnblogs.com/willick/p/3331521.html 1.继承IController接口,示例代码将当前请求的Controller和Action打印到浏 ...
最新文章
- python recv
- 团队开发个人总结05
- Andrew Ng's Deep Learning学习记录
- 使用Spring Integration轮询http端点
- 3招seo技巧让你把关键词做进百度前三
- python在末尾加关闭程序_廖雪峰的Python教程教程-02
- excel中画图坐标轴更改数字大小_Excel柱状图看不清?用这3种方法就可以
- python和环境变量_python 读取和设置环境变量
- 云南昭通暴雨强度公式_全国暴雨强度公式2018
- Java 绘制图标(饼状图)JFreeChart快速通过Java创建图表
- 网站APP信息以及用户数据泄露排查方案
- 轻松拥有自己的站内搜索引擎
- 读《有效管理的5大兵法》笔记摘录(一)核心价值观:求实、进取、创新、协同、分享
- 利用3000fps把人脸面部抠出来(一)
- 各版本 DOTween 下载地址
- CTO谈豆瓣网和校内网技术架构变迁
- 云服务器搭建GitLab
- “广告电商”到底是什么?广告收益模式是否行得通?
- 光纤收发器怎么连?光纤收发器连接图解!
- 配置NFS服务器和NFS客户端
热门文章
- 腾讯自研分布式远程Shuffle服务Firestorm正式开源
- Gartner:全行业投入人工智能,计算机视觉占比最高
- 通俗的讲,这就是容器CPU隔离的底层实现机制
- 6.6折票仅剩3天 | BDTC 2019全日程公布,哪些是你感兴趣的话题?
- 一文读懂NoSQL的模式 | 时光机
- 2000坐标系高程与85高程转换_【科普】测量人必须知道的几大坐标系
- matlab knn实现,Matlab之KNN实现
- 1分钟 搭建xxl-job任务调度中心
- jboss连接池,断开后自动重连功能
- Activiti6 use spring-boot-starter-web meet requestMappingHandlerMapping error