项目开发设计模式之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. Salesforce的多态存储和SAP C4C的元数据存储仓库

    Salesforce Force.com integrates and optimizes several different data persistence technologies to del ...

  2. ClassNotFoundException: INameEnvironment

    springboot兼容jsp启动是报错,ClassNotFoundException: INameEnvironment 降低springboot版本即可,原版本1.5.10,降为1.5.2可使用

  3. 死磕salt系列-salt配置文件

    这篇文件主要用来解释一下salt配置中常用的参数,其他的参数可以参考官网文档. 基础参数 interface: 服务器监听地址. ipv6: 是否启用ipv6. max_open_files: 最大文 ...

  4. [19/04/16-星期二] 注解机制(Annotation,区别于comment(传统意义上的注释))

    一.概念 作用: ——不是程序本身,可以对程序作出解释.(这一点和注释没什么区别) ——可以被其它程序(比如编译器)读取,这是区别于注释的最重要的一点. 格式: ——"@注释名" ...

  5. [SQL注入] 逗号拦截绕过

    在SQL注入时,在确定了注入点后,一般都需要使用联合查询猜表的列数,也就是常见的order by n,n从大到小,直到返回正常,就确定了当前查询的列的个数. 然后再使用 UNION SELECT 1, ...

  6. linq项目中例子实例

    在mvc项目中 var ls = (from i in gt.vendor_login                  join j in gt.vendor on i.vendor_id equa ...

  7. [转].NET设计模式系列文章

    最初写探索设计模式系列的时候,我只是想把它作为自己学习设计模式的读书笔记来写,可是写到今天,设计模式带给我的震撼,以及许多初学者朋友的热心支持,让我下定决心要把这个系列写完写好,那怕花上再多的时间也无 ...

  8. Dubbo实践(十一)远程调用流程

    默认协议的rpc 过程是比较复杂的,其中涉及到了各个方面,其余各协议实际上有对这个过程进行简化:因此看懂了默认协议的rpc 过程,其他协议就非常容易懂了.在讲Dubbo通信过程之前,可以先了解:Jav ...

  9. 使用java.util.List的subList方法进行分页

    java.util.List中有一个subList方法,用来返回一个list的一部分视图. List<E> subList(int fromIndex, int toIndex); 它返回 ...

  10. POJ 3080 Blue Jeans 找最长公共子串(暴力模拟+KMP匹配)

    Blue Jeans Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 20966   Accepted: 9279 Descr ...