美文网首页
谈谈MVC模式

谈谈MVC模式

作者: 流沙麒麟客 | 来源:发表于2017-03-01 11:46 被阅读44次

如何设计一个程序的结构,这是一门专门的学问,叫做“架构模式”(architectural pattern),属于编程的方法论。

MVC模式就是架构模式的一种,它不仅适用于开发软件,也适用于其他广泛的设计和组织工作。

下面是原作者阮一峰的个人理解,主要用来整理思路。

MVC是三个单词的首字母缩写,它们是Model(模型)、View(视图)和Controller(控制)

这个模式认为,程序不论简单或复杂,从结构上看,都可以被分成三层:

1) 最上面的一层,是直接面向最终用户的“视图层”(View)。
   它是提供给用户的操作界面,是程序的外壳。
2) 最底下的一层,是核心的“数据层”(Model),也就是程序需要操作的数据或信息。
3) 中间的一层,就是“控制层”(Controller),
   它负责根据用户从“视图层”输入的指令,选取“数据层”中的数据,
   然后对其进行相应的操作,产生最终的结果。

这三层是紧密联系在一起的,但是又相互独立的,每一层内部的变化不影响其他层。每一层都对外提供接口(Interface),供上一层调用。这样一来,软件就可以实现模块化,修改外观或者变更数据都不用修改其他层,大大方便了维护和升级。

用Windows的计算器小程序为例,解释下MVC模式,虽然它不一定使用这个模式编写。

在这个计算器程序中,外部的那些按钮和最上面的显示条,就是“视图层”,那些需要运算的数字就是“数据层”,执行加减乘除的那些内部运算步骤就是“控制层”。每一层执行不同的功能,整个程序的结构非常清楚。

如果我们扩大一点想象,就会发现程序本质上都是这种模式:对外提供一组触发器(本例中是按钮),然后执行一些内部操作,最后返回结果。因此,MVC模式的应用是非常广泛的。

在作者看来,不仅编写程序可以用MVC模式,家用电器也可以用。

以家用微波炉为例,可以将它理解成三层结构。最简单的情况下,微波炉的操作用两个转盘实现,一个控制温度,另一个控制时间。这两个转盘就是“视图层”,而内部的微波产生装置则是“数据层”,这里的“数据”需要理解成“核心功能”。至于将用户通过转盘输入的信息,转换成对微波产生器的操作,则用“控制层”来实现

如果每一层都是独立的,那么微波炉外部更换一个新潮的外壳,或者内部更换更大功率的微波器,完全可以在不更改其他层的情况下实现。这就是MVC模式的优势。

** 再进一步,如果将MVC模式解释成“外观”、“机制”和“功能/数据”这三层结构,那么很多人类组织也可以通过MVC模式架构。 **

比如一家商场,完全可以分成三部分。一部分是仓库,负责提供商品,这是“功能层”(或者“数据层”);另一部分是零售商铺,负责销售商品,这是它的“外观层”;两者之间就是“机制层”,包括柜台和仓库之间一切互动的机制。

这样区分后,这个商场的结构就变得非常清楚,可以针对不同的层进行优化,提高效率。

<br />
来源:谈谈MVC模式

相关文章

  • MVC - MVVM 是什么

    MVC - MVVM 是什么 谈谈MVC模式 - 阮一峰 MVC,MVP 和 MVVM 的图示 - 阮一峰 MVC...

  • 谈谈MVC模式

    转自:http://www.ruanyifeng.com/blog/2007/11/mvc.html 1. 如何设...

  • 谈谈MVC模式

    如何设计一个程序的结构,这是一门专门的学问,叫做“架构模式”(architectural pattern),属于编...

  • 谈谈MVC模式和MVP模式

    前言 最近在研究Android的MVP设计模式,经过自己的研究和参考网上的案例,对MVP设计模式也有了一定的了解,...

  • 简单谈谈MVC设计模式

    一、MVC设计模式 MVC,全称是 Model View Controller,是模型 (model)-视图 (v...

  • MVC、MVP、MVVM模式浅谈

    根据阮一峰老师的谈谈MVC模式 及MVC,MVP 和 MVVM 的图示 总结的思维导图(新建标签页才能看清楚图片)...

  • 架构设计和设计模式

    谈谈你对Android设计模式的理解 MVC MVP MVVM原理和区别 你所知道的设计模式有哪些? 项目中常用的...

  • Android基础(38)设计模式

    1)谈谈你对Android设计模式的理解2)MVC MVP MVVM原理和区别3)你所知道的设计模式有哪些?4)项...

  • spring mvc常见面试题

    什么是spring mvc , 谈谈对spring mvc的理解 spring mvc 是基于java实现的mvc...

  • JavaWeb入门——MVC

    1.MVC设计模式 1.1MVC模式 1.2MVC模式示例 index.jsp WelcomeServlet.ja...

网友评论

      本文标题:谈谈MVC模式

      本文链接:https://www.haomeiwen.com/subject/xfdqgttx.html