JavaWeb MVC与DAO模式

      最近学习了MVC和DAO模式,做一下总结。

       MVC使得业务逻辑的数据和处理方法与页面展示分离。DAO则主要是对数据层的操作,当DAO与MVC一起使用时,DAO将对数据的处理方法从MVC的Model中分离了出来,这样更加有利于代码复用,大大降低了程序块间的耦合性,便于程序的维护和扩展。

一、MVC

1、简介

        MVC是一种软件设计模式,最早出现在Smalltalk语言中,后来成为java EE中的一种设计模式。MVC三个字母分别指的是Model(模型)、View(视图)、Controller (控制器)。其中,模型表示数据业务处理功能,视图表示数据及界面展示,控制器表示流程控制。

2、优势

有利于代码复用;

有利于人员分工;

有利于降低程序模块间的耦合性。

3、JSP+JavaBean+Servlet

        在我们初学web的时候,数据展示及处理方法全部写在一个JSP页面中。在这种情况下,我们的页面的代码块会显得十分的繁杂,又有html标签,又有java代码。在学习了javabean后,我们学会了将数据的处理转移到javabean中,在这种情况下,我们的JSP页面便简洁了许多。但是仍然需要在JSP页面中对javabean中不同的数据处理方法进行调用,程序模块间的耦合性仍然较高。为此,人们又引入了Servlet,将页面所需要的对数据处理方法的调用放入其中。Servlet调用方法后,再将结果返回到相应的页面。自此,最经典的MVC模式形成,即JSP+JavaBean+Servlet。

二、DAO

1、简介

        前面讲过DAO(Data Access Object)主要是对数据层的操作,它实现了业务逻辑层与数据处理的底层之间的分离。

2、具体介绍

        首先,DAO为软件的上层模块提供了数据访问的接口。这样业务逻辑开发人员可以将所有需要用到的数据处理方法存放在这个“DAO接口类”中,在需要对数据处理时调用接口中相应的方法,而无需了解数据处理方法在底层是如何实现的。对接口类中方法的实现封装在一个“DAO实现类”中。同时,在底层,DAO也实现了数据访问实现上的分离。这听上去有些抽象,具体来说,就是我们在上层调用数据处理方法时,如果更换了数据库(比如从MySQL换成了Oracle),则需要修改数据处理方法内的代码,使得其适用于新的数据库(因为不同数据库间的连接及操作存在一定的差异)。这样工作量会增大。为此我们可以一个再增加一个专门用于调用不同数据库处理方法的方法,并将其封装到一个新的类中,这个类称为“DAO工厂类”。这样,若要更换数据库,只需要更换工厂类中的短短一行代码,即可实现。此外,DAO将数据封装在一个“VO类”中,对数据进行了抽象,使得上层无需面对繁杂的数据库的数据项,而是仅对一个数据实例进行操作。这与MVC的Model类似。

3、具体类

  • VO类(类似于MVC中的Model):实现对数据的封装;
  • DAO接口类:封装上层的业务逻辑层需要用到的未实现的数据处理方法;
  • DAO实现类:对DAO接口类中的方法进行实现;
  • DAO工厂类:根据上层需要选择特定的DAO实现类;
  • 数据库连接类:封装数据库的连接方法。

你可能感兴趣的:(Web)