欢迎来到天天文库
浏览记录
ID:35441441
大小:58.85 KB
页数:4页
时间:2019-03-24
《设计模式和xml在mvc模式中dao层中的具体运用》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、设计模式和XML在MVC模式中DAO层中的具体运用摘要:MVC模式是现今非常流行的网络开发框架,其规范化、标准化的开发模式为开发人员带来了许多便利。木着解耦的屮心思想,MVC框架巧妙而严谨的运用着许多设计模式,将一个系统分割成有明确界限的View、Controller、Service>DAO四个层次。在而向对象编程的基础上添加了许多更深入的编程思想,如面向接口和IOC容器,让整个系统更加灵活。关键字:MVCDAO工厂方法IOC容器Spring反射机制xml正文:MVC模式是现今主流的网络编程框架,其明
2、确的分层,和清晰分解的模块将原本密切耦合的元索分开,使不同元索可以不依赖与英他元索而存在。在我看来,解耦就是将系统中可以独立存在的模块逐渐缩小到一个既能够使各常用模块的界限清晰乂能够保持相对良好的编码效率的过程,让系统开发和维护始终处于一个高效的状态。尽管没有接触过大型的系统分析设计,但在小型的Web网页编写中,模块之间没有分层、相互偶尔带来的最总观的影响是当网页出现Bug时,纠错的过程和改错的过程会界常的麻烦,特别是在后期若想要增添或者除去某些不必要的功能时,盂要完成的工作就非常繁琐了。可想而知若是
3、在大型的网页开发或系统中,模块Z间耦合帯来的影响有多大。下面将具体讨论设计模式在Service层和DAO层中的具体运用,本文提到设计模式不仅仅限于23种设计模式,也包括现今流行的各种框架中的核心模式,如Spring中的IOC、AOC而向接口编程等。下而将具体讨论一个DAO实例。图1描述了一个实例DAO对彖的类ydao>0DAOFactory.java>胡DatabaseConnection.java>iSlEmpDAO.java>0Movie.java>胡MovieDAOImpl.java><3Mov
4、ieDAOProxy.java>』TestMain.java图1中可以看到一个该DAO实例包含了6个类(TestMain类为测试类,不在考虑范围内),Movie为该DAO实例中的主体元素,Databaseconnection中封装连接数据库的操作JEmpDAO为一个接口,MovieDAOImpI和MovieDAOProxy为实现了lEmp接口的具体类,DAOFactory为丁丿类,可获取一个MovieDAOProxy。需耍注意的是在实现对数据实现增、删、查、改操作时,并没有直接在一个类屮实现,而是先定
5、义了一个lEmpDAO接口。图2IEmp接口packagedao;importjava・uti1・ArrayList;IpublicinterfaceiEmpDAO{publicbooleanaddMovie(Moviemovie)throwsException;publicArrayListgetAllMovie()throwsException;publicMoviegetMovieByID(intmiD)throw$Exception;publicMoviegetMovieByNa
6、me(StringmName)throwsException;publicbooleandeleteMovie(intmID)throwsException;publicbooleanupdatcMovie(Novic?movie^St厂ingmID,StringmName,StringniGrade^StringmComment)throwsException;}在该接口屮定义并约束了所有对Movie类可以进行的操作,之后再由MovieDAOImpI和MovieProxy进行实现,这么做的好处是什么
7、呢?从Z前对接口的了解我们可以知道,接口的作用在于将内部和外部进行隔离,外部不知道内部的具体实现,只管调用就行了,这就好比插座的作用,我们不必在乎插座内部怎么通电,只需要知道我们没电了就该插插座了就可以To但是在实际编程中我们会发现,还是存在一个问题,怎么让外部不知道内部是什么就能够进行调用呢?这在DAO的设计模式中给出答案-简单丄厂模式。图3DAOFactory类packagedao;publicclassDAOFactory{publicstaticIEmpDAOgetlnstance(){IEm
8、pDAOdao=null;try{dao=newMovieDAOProxy();}catch(Exceptione){e.printStackTrace();}returndao;}I可以看到在DAOFactory屮我们返回一个接口对彖,于是外部就能通过这个接口对象进行其想要的操作了,不用去关心具体的实现。图4使用实例packagedao;publicclassTestMain{publicstaticvoidm“n(Stringargs[])throw
此文档下载收益归作者所有