java之 ------ DAO设计模式的【详解】及常见设计模式的【应用】

DAO

Data Access Object(数据访问接口)

一、场景和问题

在Java程序中,经常需要把数据持久化,也需要获取持久化的数据,但是在进行数据持久化的过程中面临诸多问题(如:数据源

不同、存储类型不同、供应商不同、访问方式不同等等),请问如何能以统一的接口进行数据持久化的操作?

二、解决方案


看懂这个图,DAO理解的也差不多了。(由于语文水平的能力啊,等我好好整理一下思路,在更新啊)


三、DAO的理解

DAO在三层结构模式中起来很大的作用,表现层通过逻辑层调用DAO,然后让DAO去调用数据层,这样很好的将数据层和其他两层隔离开,安全性和可维护性更高。然后在逻辑层和DAO层有可以建立新的DAO2,这个DAO2的作用就是避免外界直接接触里面的接口,主要通过工厂方法,实现接口的应用,这样的目的也是为了提高安全性,而且显得更层次感。

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

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

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


四、DAO设计模式的结构

DAO设计模式一般分为:


1、值对象模式 (传递参数与返回值)

VO(Value Object):就是存放项目中的一些要对其操作的数据类。

2、DAO模式  

DAO接口:用于声明对于数据的操作的方法。

3、面向接口编程 (分层、封装隔离)

DAOImpl:必须实现DAO接口,真实实现DAO接口的函数,只是单纯的处理数据。

4、工厂模式 

DAOFactory:工厂类,含有getInstance()创建一个DAOImpl类。


五、DAO模式的本质

一层屏蔽一种变化


六、DAO的好处

DAO的好处就是提供给用户的接口只有DAO的接口,所以如果用户想添加数据,只需要调用create函数即可,不需要数据库的操作



常见设计模式的应用

一、面向接口编程

1、面向接口编程是第一大原则。

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

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


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

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

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


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

问题:1、我们知道,在Java程序中,使用一个类要先通过new的操作,得到一个类的实例,然后通过这个类实例去调用类的属性和方法。

2、可是接口呢,我们怎么得到它的实例呢?要知道接口是不能直接new操作的,我们之前学过的方式是:Interface inf = new 实现类();

3、但是在面向接口编程的世界里,如果这样做,意味着客户端必须知道你具体的实现类,这破坏了接口的隔离性。使用接口就是不让外部知道隔离体内部的实现的。怎么办呢?

答案:前面的工厂模式给出了这个问题的解决方案,使用Factory来“生产”接口,对外仅仅提供工厂和接口。


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

问题:前面已经学会了如何设计一个模块对外公开的部分,那么,在内部实现的时候,遇到需要数据存储的时候,我们应该怎么操作呢?

答案:对于这个问题,DAO模式给出了较好的解决方案。

(具体操作看实例-----书店管理系统)


总结

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

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

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

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

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

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

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

对于功能上的公用模块或公共类可建立util或tool包,放入其中。


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

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

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

实现的时候:从小到大

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

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

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

3、 一个通用DAO接口模板

4、 UserVO 和 UserQueryVO的区别

UserVO封装数据记录,而UserQueryVO用于封装查询条件















©️2020 CSDN 皮肤主题: 技术黑板 设计师:CSDN官方博客 返回首页