MVC 编程模式详解

目录

什么是MVC?

Model(模型)

View(视图)

Controller(控制器)

总结

MVP

MVVM

框架与设计模式的区别

总结


什么是MVC?


MVC全名是Model View Controller。

  • 是模型(model)-视图(view)-控制器(controller)的缩写,
  • 是一种使用mvc设计创建 Web 应用程序的模式,
  • 是一种软件设计典范,
  • 是软件工程中的一种软件架构模式。

它用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。MVC被独特的发展来用于映射传统的输入、处理和输出功能在一个逻辑的图形化用户界面的结构中。

Model(模型)


表示应用程序核心(比如数据库记录列表)。

是应用程序中用于处理应用程序数据逻辑的部分。

通常模型对象负责在数据库中存取数据。


View(视图)


显示数据(数据库记录)。

是应用程序中处理数据显示的部分。

通常视图是依据模型数据创建的。


Controller(控制器)

处理输入(写入数据库记录)。

是应用程序中处理用户交互的部分。

通常控制器负责从视图读取数据,控制用户输入,并向模型发送数据。

例如下面的图示:MVC模式就是类似饭店里的经营模式,接下来依次进行分析:

表示层接受用户的交互请求,然后请求转交给业务逻辑层处理;就像是去饭店吃饭,你给服务员点好的菜单,服务员拿着你给的菜单给到后厨,后厨根据菜单来做菜。

业务逻辑层将请求转交给数据访问层,数据访问层会对请求进行逻辑判断或数据存取更新,数据更新之后,数据访问层会根据业务逻辑返回结果;这就像是厨师将需要做的菜告诉采购员,采购员进行分析需要什么原料,进而进行采购,采购结束后将做菜的材料提供给后厨。

数据访问层获得结果后,便将结果反馈给用户;这就是厨师将做好的菜提供给顾客。

注意:

控制器本身不输出任何东西和做任何处理。它只是接收请求并决定调用哪个模型构件去处理请求,然后再确定用哪个视图来显示返回的数据。

总结

我们从结构图可以看出,整个框架形成了一个闭环,这也符合设计模式的开放-封闭原则。

MVC 分层有助于管理复杂的应用程序,因为你可以在一个时间内专门关注一个方面。例如,您可以在不依赖业务逻辑的情况下专注于视图设计。同时也让应用程序的测试更加容易。MVC 分层也简化了分组开发。不同的开发人员可同时开发视图、控制器逻辑和业务逻辑,提高开发效率。

值得注意的是:如果是小型项目,引入mvc可能会增加项目周期,mvc前期设计与搭建比较费时费力,这是需要需要精心的计划的。
所以理解好mvc,是程序进阶的一步重要步骤--没有好理想的程序员不是好美术。

(做这一行不只是做一个技术人,不光追求技术超屌,写代码飞快,应该还需要在产品或者其他方面也要做好。真正在公司内,需要的是自己在产品,在站在用户这方面考虑问题的能力。如果只是在做一个码农,只是完成交付的任务,而没有真正的去理解这个功能是用来干啥的,能带给用户什么价值,这个功能重点是想去体现什么的,就无法真正去灵活运用。)

这是顺便说下MVP,MVVP模式。可以加深对MVC理解。

MVP

即模型-视图-协调器

MVP 模式将 Controller 改名为 Presenter,同时改变了通信方向。

1. 各部分之间的通信,都是双向的。

2. View 与 Model 不发生联系,都通过 Presenter 传递。

3. View 非常薄,不部署任何业务逻辑,称为"被动视图"(Passive View),即没有任何主动性,而 Presenter非常厚,所有逻辑都部署在那里。

Presenter将Model的变化返回给View。和MVC不同的是,Presenter会反作用于View,不像Controller只会被动的接受View的指挥。

MVVM

MVVM 模式将 Presenter 改名为 ViewModel,基本上与 MVP 模式完全一致。

唯一的区别是,它采用双向绑定(data-binding):View的变动,自动反映在 ViewModel,反之亦然。这个ViewModel除了正常的属性以外,还包括一些供View显示用的属性。

在支持双向绑定的平台,MVVM更受欢迎。例如:微软的WPF和Silverlight。

框架与设计模式的区别

MVC指MVC模式的某种框架,它强制性的使应用程序的输入、处理和输出分开。使用MVC应用程序被分成三个核心部件:模型、视图、控制器。它们各自处理自己的任务。最典型的MVC就是JSP + servlet + javabean的模式。

框架、设计模式这两个概念总容易被混淆,其实它们之间还是有区别的。框架通常是代码重用,而设计模式是设计重用,架构则介于两者之间,部分代码重用,部分设计重用,有时分析也可重用。在软件生产中有三种级别的重用:内部重用,即在同一应用中能公共使用的抽象块;代码重用,即将通用模块组合成库或工具集,以便在多个应用和领域都能使用;应用框架的重用,即为专用领域提供通用的或现成的基础结构,以获得最高级别的重用性。

Struts、Sprin、Zend Framework(简写ZF)、.NET这些都是使用MVC框架模式的。

总结

一个框架里可能有多个设计模式,但是一个设计模式不能统称为框架。设计模式是设计上的复用,框架是代码的复用。设计模式是比框架更抽象的,框架可以用代码表示,可以直接执行与复用,设计模式只有实例可以复用执行。

  • 7
    点赞
  • 56
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值