java设计模式(2)------DAO模式

                                                                                        java设计模式(2)

 一、DAO模式

         1、在java程序中,经常需要把数据永久化,或者需要获取永久化的数据,但是在这类过程中会有很多的问题出现,例如:数据源不同,存储类型不同,供应商不同。访问方式不同等,使用DAO模式能够以统一的接口进行数据持久化操。

         2、解决方案:

                           

         3、DAO的理解

                ①、DAO其实是利用组合工厂模式来解决问题的,并没有带来新的功能,所以学的其实就是个思路。

                ②、DAO理论上是没有层数限制的。

                ③、DAO的各层理论上是没有先后的。

         4、DAO模式的本质是一层屏蔽一种变化。

 二、常见设计模式应用

         1、面向接口编程           

                ①、面向接口编程是第一大原则。
                ②、在Java程序设计里面,非常讲究层的划分和模块的划分。通常我们按照三层来划分程序,分别UI层、逻辑层(取名                  business或service)、数据存储层,他们之间都要通过接口来通讯。

                                           
                                                                                 三层结构的设计模式

               ③、在每一个层里面,又有很多外小模块,一个小模块对外也应该是一个整体,那么一个模块对外也应该提供接口,其他            地方需要使用到这个模块的功能,都应该通过此接口。

                                          

          2、接口定义中的参数和返回值

                ①、接口里面一定会定义接口隔离体部分需要暴露的方法,对于方法就有参数和返回值的定义,到底需要在接口中如何描             述需要传递的参数呢?

                ②、值对象模式给了我们很好的解决方案。事实上,值对象已经成为了不同层或是不同模块之间数据交换的标准方法,它             体现的是数据的封装,也利于对象的复用。

                                     

                                                                     加入值对象模式后的模块(组件)设计图

             3、编程中,外部如何得到接口

                     ①、我们知道,在Java程序中,使用一个类要先通过new的操作,得到一个类的实例,然后通过这个类实例去调用类的                 属性和方法。
                     ②、可是接口呢,我们怎么得到它的实例呢?要知道接口是不能直接new操作的,我们之前学过的方式是:Interface                    inf = new 实现类();
                     ③、但是在面向接口编程的世界里,如果这样做,意味着客户端必须知道你具体的实现类,这破坏了接口的隔离性。                  使用接口就是不让外部知道隔离体内部的实现的。怎么办呢?
                     ④、刚刚学过的工厂模式给出了这个问题的解决方案,使用Factory来“生产”接口,对外仅仅提供工厂和接口。

                                         

                                                                          加入值对象与工厂模式后的模块(组件)设计图

           4、内部实现中如何进行数据存储操作 

                    前面已经学会了如何设计一个模块对外公开的部分,那么,在内部实现的时候,遇到需要数据存储的时候,我们应该怎                么操作呢?对于这个问题,DAO模式给出了较好的解决方案。

                                      

                                                                 加入值对象、工厂、DAO模式后的模块(组件)设计图


 三、组件/模块设计思想总结

           1、 面向接口编程:分层、封装隔离

           2、之对象模式:传递参数与返回值

           3、工厂模式:得到接口的实例

           4、DAO模式:内部,数据存储

                                                

  

 四、Java 程序设计--包结构

          1、Java程序设计的系统体系结构很大一部分都体现在包结构上

          2、一种典型的Java应用程序的包结构:前缀.应用或项目的名称.模块组合.模块内部的技术实现

                说明:

                         ①、前缀:是网站域名的倒写,去掉www(如,Sun公司(非JDK级别)的东西:com.sun.* )。

                         ②、其中模块组合又由系统、子系统、模块、组件等构成(具体情况根据项目的大小而定,如果项目很大,那么就                        多分几层。

                         ③、模块内部的技术实现一般由:表现层、逻辑层、数据层等构成。

          3、对于许多类都要使用的公共模块或公共类,可以再独立建立一个包,取名common或base,把这些公共类都放在其中;对              于功能上的公用模块或公共类可建立util或tool包,放入其中。


 五、设计与实现的常用方式、DAO的基本功能

          1、设计的时候:从大到小

                  先把一个大问题分解成一系列的小问题。或者说是把一个大系统分解成多个小系统,小系统再继续进行往下分解,直到               分解到自己能够掌控时,再进行动手实现。

          2、实现的时候:从小到大

                  先实现组件,进行测试通过了,再把几个组件实现合成模块,进行测试通过,然后继续往上扩大。

          3、最典型的DAO接口通常具有的功能:

                  新增功能、修改功能、删除功能、按照主要的键值进行查询、获取所有值的功能、按照条件进行查询的功能。

          4、一个通用DAO接口模板

          5、UserVO 和 UserQueryVO的区别:UserVO封装数据记录,而UserQueryVO用于封装查询条件。




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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值