项目开发设计模式之MVC模式:

  1. M model 模型层
  2. V view 视图层
  3. C control 控制器

MVC模式在B/S架构下使用很广泛的软件设计模式,分成三个相对独立的模块构成,model+view+control,即模型+视图+控制。下面详细理解一下这三个块。

模型层:这一层是该模式中最核心的部分,很容易理解作为模型层来说,需要起总领全局的作用。模型主要包括业务流程和处理的过程以及所拥有的数据和程序逻辑。模型接受视图数据的请求,并返回最终的处理结果。模型是独立于视图和控制器的,因此一个模型可以供多个视图来使用,当模型的数据出现变动时,每个视图也相应收到模型的通知来更新自己。

视图层:视图就是用户看到的并与之交互的界面信息,用来呈现出模型。在JavaScript 应用中,视图大都是由HTML、CSS 和JavaScript 模板组成。视图通常直接从模型中取得它需要显示的状态与数据。对于相同的信息可以有多个不同的显示形式或视图。通俗讲,与用户交互过程中,视图层作为模型层的“传话”人,当用户发出请求—控制器响应并请求模型层—模型层通过视图来呈现给用户,当然这个呈现方式就肯定可以有差别了

控制器:位于视图和模型中间,起着一种桥梁纽带作用,主要负责接受用户的输入,将输入进行解析并反馈给模型,当模型响应时能够更新视图。通常一个视图具有一个控制器。当用户与应用交互时,控制器中的触发器负责事件监听。

优点:
1. 实现各个模块之间的分离,每一层分工明确,各司其职,降低耦合性,提高可维护性、可移植性以及可扩展性,更容易更换具体的实现,即后期维护的难度,而对其他层代码影响较小。
2. 一个模型可以对应多个视图,降低冗余,同时独立于视图,可移植性高,比较适合大项目的开发和维护。
缺点:
1. 三层结构很好地降低了模块之间的耦合性,但是实际来说导致系统结构的复杂度反而增大,实际实现起来的难度变大。
2. 视图层作为对模型层的反馈,要访问模型数据是效率较低。

项目开发设计模式理解之MVC模式的更多相关文章

  1. IOS设计模式之三:MVC模式

    IOS设计模式之三:MVC模式   模型-视图-控制器 这个模式其实应该叫做MCV,用控制器把model与view隔开才对,也就是model与view互相不知道对方的存在,没有任何瓜葛,他们就像一个团 ...

  2. IOS设计模式之一(MVC模式,单例模式)

    iOS 设计模式-你可能已经听说过这个词,但是你真正理解它意味着什么吗?虽然大多数的开发者可能都会认为设计模式是非常重要的,然而关于设计模式这一主题的文章却不多,并且有时候我们开发者在写代码的时候也不 ...

  3. 游戏开发设计模式之对象池模式(unity3d 示例实现)

    前篇:游戏开发设计模式之命令模式(unity3d 示例实现) 博主才学尚浅,难免会有错误,尤其是设计模式这种极富禅意且需要大量经验的东西,如果哪里书写错误或有遗漏,还请各位前辈指正. 原理:从一个固定 ...

  4. 【iOS 开发】iOS 开发 简介 (IOS项目文件 | MVC 模式 | 事件响应机制 | Storyboard 控制界面 | 代码控制界面 | Retina 屏幕图片适配)

    一. iOS 项目简介 1. iOS 文件简介 创建一个 HelloWorld 项目, 在这个 IOS 项目中有四个目录 : 如下图; -- HelloWorldTests 目录 : 单元测试相关的类 ...

  5. iOS中常见的设计模式——单例模式\委托模式\观察者模式\MVC模式

    一.单例模式 1. 什么是单例模式? 在iOS应用的生命周期中,某个类只有一个实例. 2. 单例模式解决了什么问题? 想象一下,如果我们要读取文件配置信息,那么每次要读取,我们就要创建一个文件实例,然 ...

  6. 设计模式-14 MVC模式

    一 MVC设计模式 MVC 模式代表 Model-View-Controller(模型-视图-控制器) 模式,它是一个存在于服务器 表达层的模型,它将应用分开,改变应用之间的高度耦合 MVC设计模式将 ...

  7. 游戏开发设计模式之状态模式 & 有限状态机 & c#委托事件(unity3d 示例实现)

    命令模式:游戏开发设计模式之命令模式(unity3d 示例实现) 对象池模式:游戏开发设计模式之对象池模式(unity3d 示例实现) 原型模式:游戏开发设计模式之原型模式 & unity3d ...

  8. 游戏开发设计模式之原型模式 & unity3d JSON的使用(unity3d 示例实现)

    命令模式:游戏开发设计模式之命令模式(unity3d 示例实现) 对象池模式:游戏开发设计模式之对象池模式(unity3d 示例实现) 实现原型模式 原型模式带来的好处就是,想要构建生成任意独特对象的 ...

  9. Java项目开发

    项目开发整体构建: MVC+DAO设计模式 用面向对象的方式理解和使用数据库,一个数据库对应一个java项目 数据库--项目 表--类 字段--属性 表中的一条数据--类的一个对象 M:模型层 Jav ...

随机推荐

  1. MySQL 数据库--索引原理与慢查询优化

    索引的原理 本质都是:通过不断地缩小想要获取数据的范围来筛选出最终想要的结果,同时把随机的事件变成顺序的事件,也就是说,有了这种索引机制,我们可以总是用同一种查找方式来锁定数据. 索引的数据结构 b+ ...

  2. [EffectiveC++]item21:Don't try to return a reference when you must return an object

  3. 使用android studio检测app内存泄漏【转载】

    Android开发中难免会遇到各种内存泄漏,如果不及时发现处理,会导致出现内存越用越大,可能会因为内存泄漏导致出现各种奇怪的crash,甚至可能出现因内存不足而导致APP崩溃. 一般检测android ...

  4. BZOJ 1303 中位数图 模拟

    题目链接: https://www.lydsy.com/JudgeOnline/problem.php?id=1303 题目大意: 给出1~n的一个排列,统计该排列有多少个长度为奇数的连续子序列的中位 ...

  5. cpu和gpu关于图像的分工

    cpu: 图像IO导入: 图像生成: 部分图片解码: gpu: 几何图像表示: 几何图像组合等处理: 部分格式图像解码: 图像的光学.几何学操控:

  6. Python 模块化 自定义模块 (四)

    自定义模块 一个.py文件就是一个模块 创建以下三个文件: 运行test.py ,查看运行结果. #test.py print("this is test module") imp ...

  7. Ubuntu安装MySQL/MariaDB

    安装MariaDB/MySQL MariaDB是MySQL的分支,与MySQL高度兼容,几乎所有的命令都一样.MariaDB是由前MySQL的开发人员离开Sun公司后开发的,目的是为了防止Oracle ...

  8. WebRTC博客推荐

    1. http://www.cnblogs.com/lingyunhu/ 2. http://www.jianshu.com/u/eadc7531ecb8

  9. ts简单点

    typescript 简洁使用 *做最简洁核心的记录,可以节约时间.再是提炼概括,理解归纳.便于日后查阅联想* > typescript原则之一: 对值所具有的结构进行类型检查 #### 基础类 ...

  10. HDFS的Write过程

    hadoop中重要的组成部分HDFS,它所发挥的重要作用是进行文件的后端存储.HDFS针对的是低端的服务器,场景为读操作多.写操作少的情况.在分布式存储情况下,比较容易出现的情况是数据的损害,为了保证 ...