zoukankan      html  css  js  c++  java
  • MVC模式

        MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的编写,一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。MVC被独特的发展起来用于映射传统的输入、处理和输出功能在一个逻辑的图形化用户界面的结构中。MVC开始是存在于桌面程序中的,M是指数据模型,V是指用户界面,C则是控制器,使用MVC的目的是将M和V的实现代码分离,从而使同一个程序可以使用不同的表现形式。比如一批统计数据可以分别用柱状图、饼图来表示。C存在的目的则是确保M和V的同步,一旦M改变,V应该同步更新。

        MVC是一个设计模式,它强制性的使应用程序的输入、处理和输出分开。使用MVC应用程序被分成三个核心部件:模型、视图、控制器。它们各自处理自己的任务。

        视图是用户看到并与之交互的界面。对老式的Web应用程序来说MVC模式图,视图就是由HTML元素组成的界面,在新式的Web应用程序中,HTML依旧在视图中扮演着重要的角色,但一些新的技术已层出不穷。

        MVC好处是它能为应用程序处理很多不同的视图。在视图中其实没有真正的处理发生,不管这些数据是联机存储的还是一个雇员列表,作为视图来讲,它只是作为一种输出数据并允许用户操纵的方式。

        模型表示企业数据和业务规则。在MVC的三个部件中,模型拥有最多的处理任务。例如它可能用象EJBs和ColdFusion Components这样的构件对象来处理数据库,被模型返回的数据是中立的,就是说模型与数据格式无关,这样一个模型能为多个视图提供数据,由于应用于模型的代码只需写一次就可以被多个视图重用,所以增加了代码的重复性。

        控制器接受用户的输入并调用模型和视图去完成用户的需求,所以当单击Web页面中的超链接和发送HTML表单时,控制器本身不输出任何东西和做任何处理。它只是接收请求并决定调用哪个模型构件去处理请求,然后再确定用哪个视图来显示返回的数据。

        设计模式分为三个部分,分别为表现层、业务逻辑层、数据持久层。三个层次分工明确,共同组成了MVC模式。

        表现层包含表示代码、用户交互GUI、数据验证。业务逻辑层包含业务规则处理代码,即程序中与业务相关专业算法、业务政策等等。该层用于执行业务流程和制定数据的业务规则。业务逻辑层主要面向业务应用,为表示层提供业务服务。

        数据持久层包含数据处理代码和数据存储代码。数据持久层住哟啊包括数据存取服务,负责与数据库管理系统之间的通信。三个层次的每一层在处理程序上有各自明确的任务,在功能实现上有清晰地区分,各层与其余层之间分离,但是各层之间存有相互通信的接口。

        MVC有耦合性低、重用性高、生命周期成本低、部署快、可维护性高、有利于工程化管理等有点;但是也有没有明确定义、不适合小型,中等规模的应用程序、增加系统结构和实现的复杂性、视图与控制器间的过于紧密的连接、试图对模型数据的低效率访问、一般高级的界面工具或构造器不支持模式等缺点。

        在 Struts 中,已经由一个Struts 体系结构名为ActionServlet 的 Servlet充当控制器(Controller)的角色,根据描述模型、视图、控制器对应关系的 struts-config.xml 的配置文件,转发视图(View)的请求,组装响应数据模型(Model)。在 MVC 的 模型(Model)部分,经常划分为两个主要子系统(系统的内部数据状态与改变数据状态的逻辑动作),这两个概念子系统分别具体对应 Struts 里的 ActionForm与 Action 两个需要继承实现超类。在这里,Struts 可以与各种标准的数据访问技术结合在一起,包括Enterprise Java Beans(EJB),JDBC 与JNDI。在 Struts 的视图(View) 端,除了使用标准的JavaServer Pages(JSP)以外,还提供了大量的标签库使用,同时也可以与其他表现层组件技术(产品)进行整合,比如 Velocity Templates,XSLT等。通过应用 Struts 的框架,最终用户可以把大部分的关注点放在自己的业务逻辑(Action)与 映射关系的配置文件(struts-config.xml)中。

        spring包括:XML和基于注解的配置风格灵活的依赖注入;先进的面向方面编程的支持与基于代理和基于AspectJ的变种;支持声明性事务,缓存的声明,声明确认,声明格式;与常见的Java EE规范,如JDBC,JPA JTA和JMS工作的强大抽象;一流的支持,共同开源框架如Hibernate和石英;一个灵活的网络框架构建RESTful MVC应用程序和服务端点;单元测试,集成测试以及丰富的测试设施。​

        

  • 相关阅读:
    IOS4.x下UIWebView的显示问题
    UIView的动画
    (转)iPhone实战:动态改变UITableView中的Cell高度
    (原) 定制使UITabBarController的tabbar选中tabbaritem时不高亮以及换背景色(支持iPad旋转)
    IOS开发问题汇总
    (转)公钥加密技术
    [Nikon D80]南门老家
    Realtime Ray Tracing RenderMan Point Cloud
    今天败入音特美ER6i
    Practice Realistic Human Skin Rendering In RenderMan Production Pipeline
  • 原文地址:https://www.cnblogs.com/dawn-sky/p/6753985.html
Copyright © 2011-2022 走看看