`
ictch
  • 浏览: 131477 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

谈谈MVC模式

    博客分类:
  • Java
阅读更多

1.

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

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

下面是我对MVC模式的一些个人理解,不一定正确,主要用来整理思路。

2.

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

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

1)最上面的一层,是直接面向最终用户的"视图层"(View)。它是提供给用户的操作界面,是程序的外壳。

2)最底下的一层,是核心的"数据层"(Model),也就是程序需要操作的数据或信息。

3)中间的一层,就是"控制层"(Controller),它负责根据用户从"视图层"输入的指令,选取"数据层"中的数据,然后对其进行相应的操作,产生最终结果。

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

3.

bg2007110801.jpg

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

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

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

4.

bg2007110802.jpg

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

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

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

5.

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

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

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

6.

公司、政党、政府、医院、学校等等,这些组织不管是盈利性还是非盈利性的,都可以从MVC模式的角度,进行架构,由一个个执行特定功能、可重复使用的模块组成。

我在想,如果人类社会都是模块化结构,那会是怎样的情景?

(完)

分享到:
评论

相关推荐

    谈谈关于JavaScript 中的 MVC 模式

    原文:Model-View-Controller (MVC) with JavaScript作者:Alex@Net译文:JavaScript 的 MVC 模式译者:justjavac 本文介绍了模型-视图-控制器模式在 JavaScript 中的实现。 我喜欢 JavaScript,因为它是在世界上最...

    HPH笔试题整理

    MVC模式的目的就是实现Web系统的职能分工。 Model层实现系统中的业务逻辑。 View层用于与用户的交互。 Controller层是Model与View之间沟通的桥梁,它可以分派用户的请求并选择恰当的视图以用于显示,同时它也可以...

    Struts Spring Hibernate面试题汇总

    1. 谈谈你mvc的理解 MVC是Model—View—Controler的简称。即模型—视图—控制器。MVC是一种设计模式,它强制性的把应用程序的输入、处理和输出分开。 MVC中的模型、视图、控制器它们分别担负着不同的任务。 视图:...

    全栈工程师修炼指南 下载

    12-唯有套路得人心:谈谈JavaEE的那些模式.mp3 13-特别放送:选择比努力更重要.mp3 14-别有洞天:从后端到前端.mp3 15-重剑无锋,大巧不工: JavaScript面向对象.mp3 16-百花齐放,百家争鸣:前端MVC框架.mp3 17-不...

    谈谈你对Struts的理解。

    1. struts是一个按MVC模式设计的Web层框架,其实它就是一个大大的servlet,这个Servlet名为ActionServlet,或是ActionServlet的子类。我们可以在web.xml文件中将符合某种特征的所有请求交给这个Servlet处理,这个...

    谈谈UI架构设计的演化

    在1979年,经典MVC模式被提出。在当时,人们一直试图将纯粹描述思维中的对象与跟计算机环境打交道的代码隔离开来,而TrygveReenskaug在跟一些人的讨论中,逐渐剥离出一系列的概念,最初是Thing、Model、View、Editor...

    什么是 MVVM 模式1

    关于“架构设计”,这是个很的话题,伴随着我们的业务需求,它会涉及到,我们今天来谈谈其中的个基础环MVC 是最常见的客户端软件架构之,它历史悠久,简单好,易于理解

    JAVA-SSH面试题

    1. 谈谈你mvc的理解 MVC是Model—View—Controler的简称。即模型—视图—控制器。MVC是一种设计模式,它强制性的把应用程序的输入、处理和输出分开。 MVC中的模型、视图、控制器它们分别担负着不同的任务。 视图:...

    Java求职面试宝典各大公司常考知识点

    4.13. struts2.0的mvc模式?与struts1.0的区别? 13 4.14. struts的处理流程。 13 4.15. Struts/webwork 的工作机制,它有哪些标签 18 3 Spring部分 18 4.1. spring工作机制 18 4.2. 使用Spring的好处 19 4.3. spring...

    asp.net知识库

    2分法-通用存储过程分页(top max模式)版本(性能相对之前的not in版本极大提高) 分页存储过程:排序反转分页法 优化后的通用分页存储过程 sql语句 一些Select检索高级用法 SQL server 2005中新增的排序函数及应用 ...

     MVP+WCF+三层结构搭建项目框架

    原先的项目是一个运用了WCF的C/S系统,在客户端运用了MVC模式,但MVC的View、Model耦合以及WCF端分布式欠佳等问题让我有了重构的想法,经过了一段时间的改造,逐渐形成了MVP+三层结构+WCF的面向服务的程序架构。...

    distributed-system-framework:这是一个基于Linux平台,C ++编写的分布式系统。服务器端采用了线程池+ Libevent的IO模型,并因此实现了简单的负载均衡。服务器端业务层使用了MVC的设计模式。数据存储方面对MySQL数据库C-API进行了C ++的类封装。

    在具体谈整个项目的工作流程前,先来谈谈客户端到底是如何如服务器建立连接的。在未实现负载均衡服务器前,通常我们会为客户端指定服务器的IP地址和端口,直接连接。但是这样存在的问题是服务器当并发量大到一定的...

    Vue面试题,干货(附答案)

    谈谈你对 MVVM 的理解? ● MVVM 分别是model viewModel view 目的是为了实现分层的。 借助了后台的分层思想来实现代码的划分。 前端借助了后 端mvc但是发现所有的逻辑都放在controller这一层,逻辑非常臃肿。难以...

    Java面试宝典2010版

    实现MVC模式,结构清晰,使开发者只关注业务逻辑的实现. 7、STRUTS的应用(如STRUTS架构) 8、说说struts1与struts2的区别。 9、hibernate中的update()和saveOrUpdate()的区别,session的load()和get()的区别。 10...

    最新Java面试宝典pdf版

    实现MVC模式,结构清晰,使开发者只关注业务逻辑的实现. 120 7、STRUTS的应用(如STRUTS架构) 121 8、说说struts1与struts2的区别。 121 9、hibernate中的update()和saveOrUpdate()的区别,session的load()和get()的...

Global site tag (gtag.js) - Google Analytics