MVC思维

模型-视图-控制器(MVC)是80年代Smalltalk-80出现的一种软件设计模式,现在已经被广泛的使用

MVC是一种软件设计模式,不仅仅应用于WEB。在日常生活中处处可以找到类似于MVC的例子。

在WEB应用上,J2EE平台最先应用MVC设计模式,并成为一个事实上的标准。 taobao,baidu的设计模式:数据与显示分离

 1、模型(Model)
  业务逻辑层。用于封装业务逻辑和数据模型。

模型(Model):就是业务流程/状态的处理以及数据模型的制定。业务流程的处理过程对其它层来说是黑箱操作,模型接受视图请求的数据,并返回最终的处理结果。模型的设计可以说是MVC最主要的核心。


2、视图(View)
  表示层。就是与用户实现交互的界面,通常实现数据的输入和输出功能。

视图(View)代表用户交互界面,对于Web应用来说,可以概括为HTML界面,但有可能为XML、WML和Excel。随着应用的复杂性和规模性,界面的处理也变得具有挑战性。一个应用可能有很多不同的视图,MVC设计模式对于视图的处理仅限于视图上数据的采集和处理,以及用户的请求,而不包括在视图上的业务逻辑的处理。业务逻辑的处理由模型(Model)完成。比如一个订单的视图只接受来自模型的数据并显示给用户,以及将用户界面的输入数据和请求传递给控制和模型。

3、控制器(controller)
  控制层。起到控制整个业务流程的作用,实现View层跟Model层的协同工作。

控制器(Controller)可以理解为从用户接收请求, 将模型与视图匹配在一起,共同完成用户的请求。划分控制层的作用也很明显,它清楚地告诉你,它就是一个分发器,选择什么样的模型,选择什么样的视图,可以完成什么样的用户请求。控制层并不做任何的数据处理。例如,用户点击一个连接,控制层接受请求后, 并不处理业务信息,它只把用户的信息传递给模型,告诉模型做什么,选择符合要求的视图返回给用户。因此,一个模型可能对应多个视图,一个视图可能对应多个模型。

•从程序上划分:

  用于显示的页面是视图层,用于流程控制的是控制层,其余的都是模型层

•各层功能:

     视图:

  1.显示格式化后的数据

  2.向控制器发出请求

     控制器:

         1.响应视图的请求,调用相应的模型

          2. 根据用户请求和模型响应结果,选择合适的视图

    模型:

          提供纯净数据

采用MVC结构开发的底线:

1.所有的请求,流程控制都是由控制器完成

         2.视图部分不能有任何的业务逻辑

优势:

1.首先,最重要的一点是多个视图能共享一个模型。由于模型返回的数据没有进行格式化,所以同样的构件能被不同界面使用,无论你的用户想要Flash界面或是 WAP 界面;用一个模型就能处理它们。由于已经将数据和业务逻辑从表示层分开,所以你可以最大化的重用你的代码。

2.因为模型是自包含的,并且与控制器和视图相分离,所以很容易改变你的应用程序的数据层和业务逻辑。如果你想把你的数据库从MySQL移植到Oracle,只需改变你的模型即可。一旦你正确的实现了模型,视图将会正确的显示它们。由于运用MVC的应用程序的三个部件是相互对立,改变其中一个不会影响其它两个,所以依据这种设计思想你能构造良好的松偶合的组件。

3.在MVC模式中,由于按层把系统开,那么就能更好的实现开发中的分工。网页设计人员可以进行视图部分的开发,对业务熟悉的开发人员可开发业务模型,而其它开发人员可开发控制层。 同时,在项目维护中,因为结构清晰,非常利用维护工作。

4.MVC更符合软件工程化管理的精神。不同的层各司其职,每一层的组件具有相同的特征,有利于通过工程化和工具化产生管理程序代码。

劣势:

1.MVC的缺点是由于它没有明确的定义,所以完全理解MVC并不是很容易。使用MVC需要精心的计划,由于它的内部原理比较复杂,所以需要花费一些时间去思考。
你将不得不花费相当可观的时间去考虑如何将MVC运用到你的应用程序,同时由于模型和视图要严格的分离,这样也给调试应用程序到来了一定的困难。

2.增加了系统结构和实现的复杂性。对于简单的界面,严格遵循MVC,使模型、视图与控制器分离,会增加结构的复杂性,并可能产生过多的更新操作,降低运行效率。

3.视图与控制器间的过于紧密的连接。视图与控制器是相互分离,但确实联系紧密的部件,视图没有控制器的存在,其应用是很有限的,反之亦然,这样就妨碍了他们的独立重用。

4.视图对模型数据的低效率访问。依据模型操作接口的不同,视图可能需要多次调用才能获得足够的显示数据。对未变化数据的不必要的频繁访问,也将损害操作性能。  

MVC设计模式是一个很好创建软件的途径,它所提倡的一些原则,像数据和显示互相分离可能比较好理解。但是如果你要隔离模型、视图和控制器的组件,你可能需要重新思考你的程序,尤其是程序的构架方面。如果你肯接受MVC,并且有能力应付它所带来的额外的工作和复杂性,MVC将会使你的软件在健壮性,代码重用和结构方面上一个新的台阶。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值