MVC的开发模式

来源:互联网 发布:网络交友有利有弊 英语 编辑:程序博客网 时间:2024/05/21 05:23
 MVC模式
一、MVC模式
  MVC是一种架构型模式,它本身并不引入新的功能,只是用来指导我们改善应用程序的架构,使得应用模型和视图分离,从而使得更好的开发和维护效率。
  
在MVC模式中,应用程序被划分成了模型(Model)、视图(View)和控制器(Controller)三个部分。其中,模型部分包含了应用程序的业务逻辑和业务数据;视图部分封装了应用程序的输出形式,也就是通常所说的页面或者是界面;二控制器部分则负责协调模型和视图,根据用户请求来选择要调用哪个模型来处理业务,以及最终由哪个视图为用户走出应答。
二、MVC模式基础
在MVC模式中,一个应用被划分成了模型(Model)、视图(View)和控制器(Controller)三个部分,接下来认识一下这三个部分。
1、模型、视图、控制器各部分的作用
>>模型(Model):负责封装应用的状态,并实现应用的功能。通常又分为数据模型和业务逻辑模型,数据模型用来存放业务数据,比如订单信息、用户信息等;而业务逻辑模型包含应用的业务操作,比如订单的添加或者修改等。
>>视图(View):用来将模型的内容展现给用户,用户可以通过视图来请求模型进行更新。视图从模型获得要展示的数据,然后用自己的方式展现给用户,相当于提供界面来与用户进行人机交互;用户在界面上操作或者填写完成后,会点击提交按钮或是以其它触发事件的方式,来向控制器发出请求。
>>控制器(Controller):用来控制应用程序的流程和处理视图所发出的请求。当控制器接收到用户的请求后,会将用户的数据和模型的更新相映射,也就是调用模型来实现用户请求的功能;然后控制器会选择用于响应的视图,把模型更新后的数据展示给用户。
2、模型和视图的关系
  在MVC中,模型和视图是分离的,通常视图里面不会有任何逻辑实现;而模型也是不依赖于视图的,同一个模型可能会有很多种不同的展示方式,也就是同一个模型可以对应多种不同的视图。模型负责输出的内容,而视图负责输出的形式,模型不依赖于视图,模型与视图是解耦的。因此在修改视图,也就是显示方式的时候,不必关心模型,而只需要直接修改视图的展示方式即可。
3、MVC的组件关系
  MVC的组件关系图描述了模型、视图、控制器这三个部分的交互关系,下面按照交互顺序来详细描述一下它们的交互关系:
(1)首先是展示视图给用户,用户在这个视图上进行操作,并填写一些业务数据
(2)然后用户会点击提交按钮,来发出请求
(3)视图发出的用户请求会到达控制器,在请求中包含了想要完成什么样的业务功能以及相关的数据。
(4)控制器会来处理用户请求,会把请求中的数据进行封装,然后选择并调用合适的模型,请求模型进行状态更新,然后选择接下来要展示给用户的视图。
(5)模型会去处理用户请求的业务功能,同时进行模型状态的维护和更新
(6)当模型状态发生改变的时候,模型会通知相应的视图,告诉视图它的状态发生了改变。
(7)视图接到模型的通知后,会向模型进行状态查询,获取需要展示的数据,然后按照视图本身的展示方式,把这些数据展示出来。接下来就是等待用户下一次操作,再次从头轮回了。
三、 MVC模式作用
  MVC模式的核心手段是解耦,MVC模式通过仔细的划分功能,把整个应用程序划分成模型、视图、控制器三个部分,然后严密控制三个部分之间的通信,从而得到一个结构清晰、功能分布合理、可重用、可扩展、可维护的应用程序。
因此,使用MVC模式,可以获得以下好处:
  >>低耦合性:在MVC模式中,模型和视图是解耦的,模型不会依赖于视图,而视图也仅仅是从模型中获取需要展示的数据,并不会与模型的逻辑处理相关联。
  >>更低的开发成本:由于MVC模式帮我们清楚的划分了各部分的职责,就可以让程序员各司其职,Java程序员只关心业务逻辑的实现,也就是模型部分;而界面程序员只关心页面展示,也就是视图部分即可。
  >>更好的可维护性:MVC模式划分出明晰的模型和视图部分,并使其解耦,在软件需求发生变更的时候,就可以各自独立的改变而不会相互影响,使得程序更容易维护和扩展。
四、Model2模型中的MVC
1、在Java的Web开发中,通常把Servlet+JSP+JavaBean的模型称为Model2模型,这是一个完全遵循MVC模式的模型,基本划分如下:
  >>JavaBean作为模型,既可以作为数据模型来封装业务数据,又可以作为业务逻辑模型来包含应用的业务操作。其中,数据模型用来存储或传递业务数据,而业务逻辑模型接收到控制器传过来的模型更新请求后,执行特定的业务逻辑处理,然后返回相应的执行结果。
  >>JSP作为表现层,负责提供页面来为用户展示数据,提供相应的表单(Form)来用于用户的请求,并在适当的时候(比如用户点击提交的按钮),向控制器发出用户请求来请求模型进行更新。
  >>Serlvet作为控制器,用来接收用户提交的请求,然后获取请求中的数据,将之转换为业务模型需要的数据模型,然后调用业务模型相应的业务方法,请求模型进行更新,同时根据业务执行结果来选择要返回的视图,也就是选择下一个页面。
  2、MVC是一个设计模式,它强制性地使应用程序的输入,处理和输出分开。MVC设计模式被分成3个核心,即模型层,显示层,控制层。他们各自处理各自的任务,各层的任务如下:  
  >> 显示层(View):主要负责接受Servlet传递的内容,并调用javaBean,将内容显示给用户
  >> 控制层(Controller):主要负责所有的用户请求参数,判断请求参数是否合法,根据请求的类型调用JavaBean执行操作并将最终的处理结果交由显示层进行显示。
  >> 模型层(Model):完成一个独立的业务操作组件,一般都是以JavaBean或者EJB的形式定义
3、需要的程序清单如下:
NO   名称                文件类型    描述
1    User                JavaBean    用户登录的VO操作类
2    DataBaseConnection  JavaBean    负责数据库的连接和关闭
3    IUserDao            JavaBean    定义登录操作的DAO接口
4    UserDaoImpl         JavaBean    DAO接口的实现类,完成具体的登录验证
5    UserDaoProxy        JavaBean    定义代理操作,负责数据库的打开和关闭并调用真实主题
6    DAOFactory          JavaBean    工厂类,取得DAO接口的实例
7    LoginServlet        Servlet     接受请求参数,进行参数验证,调用DAO完成具 体的登录验                                                   证,并根据DAO的验证结果返回登录信息
8    Login.jsp           JSP         提供用户输入的表单,可以显示用登录成功失败的信息
  
1 0
原创粉丝点击