小白MVC框架讲解

为什么要学习MVC?

软件中最核心的,最基本的东西是什么?
问题:
没有很好设计的代码,常常就会出现数据层(持久层)和业务逻辑层还有界面代码耦合(相互影响)的情况。
而MVC用来解决业务逻辑和视图之间的耦合。

基本术语和概述

MVC模式:
MVC全名是Model View Controller,是模型(model)-视图(view)-控制
器(controller)的缩写。MVC开始是存在于桌面程序中的,M是指业务模
型,V是指用户界面,C则是控制器。
使用MVC的目的是将M和V的实现代码分离,从而使同一个程序可以使用不同的表现形式.

3.1 主动MVC
MVC的理论思想对应的是主动MVC, 这里的主动的意思是, Model会主动通
知View更新。而我们使用MVC框架, Struts, asp.net mvc等都不是主动
MVC(视图的更新都是通过Controller完成的)

Model
用于封装与应用程序的业务逻辑相关的数据以及对数据的处理方法。
模型中数据的变化一般会通过一种刷新机制被公布。为了实现这种机制
以了解在数据模型上发生的改变。

View
视图层负责数据的展示。
在视图中一般没有程序上的逻辑。为了实现视图上的刷新功能,视图需
要访问它监视的数据模型(Model),因此应该事先在被它监视的数据那
里订阅Model的事件。

Controller
控制器是M和V之间的连接器,用于控制应用程序的流程。它处理事件并
作出响应。“事件”包括用户的行为和数据模型上的改变。

3.2 被动MVC
和主动MVC不同之处是, View没有订阅Model数据变化的事件,等待Model来通知需要根据新的数据来更新View. 在被动MVC中,Controller负责通知View, 有数据变化,需要更新视图。

被动MVC 中,与主动MVC的区别在于:
1、模型对视图和控制器一无所知,它仅仅是被它们使用
2、控制器使用视图,并通知它更新数据显示
3、视图仅仅是在控制器通知它去模型取数据的时候它才这么做(视图并
不会订阅或监视模型的更新)

MVC总结

MVC优点
由于MVC很好的分离了视图层和业务层,所以它具有以下优点
耦合性低
视图层和业务层分离,这样就允许更改视图层代码而不用重新编译模型和控制器代码,同样,一个应用的业务流程或者业务规则的改变只需要改动MVC的模型层即可。因为模型与控制器和视图相分离,所以很容易改变应用程序的数据层和业务规则。
开发速度快
不同的开发人员可同时开发视图、控制器逻辑和业务逻辑。可维护性高
分离视图层和业务逻辑层也使得WEB应用更易于维护和修改。


MVC的缺点
(1)增加了系统结构和实现的复杂性。
对于简单的界面,严格遵循MVC,使模型、视图与控制器分离,会增加结构的复杂性,并可能产生过多的更新操作,降低运行效率。
(2)视图与控制器间的过于紧密的连接。
视图与控制器是相互分离,但确实联系紧密的部件,视图没有控制器的存在,其应用是很有限的,反之亦然,这样就妨碍了他们的独立重用。
(3)视图对模型数据的低效率访问。
依据模型操作接口的不同,视图可能需要多次调用才能获得足够的显示数据。对未变化数据的不必要的频繁访问,也将损害操作性能。
(4) 目前,一般高级的界面工具或构造器不支持MVC架构。
改造这些工具以适应MVC需要和建立分离的部件的代价是很高的,从而造成使用MVC的困难

MVC使用误区

1.把Model理解成实体类(Entity),在MVC中Model应该包含2部分功能
,一部分是处理业务逻辑,一部分是提供View显示的数据
2.把业务逻辑全部放在Controller端这两个误区本质上都是对Model的作
用不明导致的。Model在MVC架构中起的作用非常重要,它应该是业务逻
辑真正的实现层。所以Model的实际上是Business Model(业务模型)。
而Controller仅仅起一个“桥梁”作用,它负责把View的请求转发给
Model,再负责把Model处理结束的消息通知View。Controller是用来解
耦View和Model的,具体一点说,就是为了让UI与逻辑分离(界面与代码
分离)。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Glunn

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值