设计模式5——DAO

★ 场景和问题

在Java程序中,常常须要把数据持久化。也须要获取持久化的数据,可是在进行数据持久化的过程中面临诸多问题

(如:数据源不同、存储类型不同、供应商不同、訪问方式不同等等),

请问怎样能以统一的接口进行数据持久化的操作?

比如:

★ DAO的理解

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

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

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

★ DAO模式的本质

一层屏蔽一种变化

图片显示路径:

★ 代码实现

package cn.hncu.patterns.exercise.dao;

import cn.hncu.patterns.exercise.dao.api.DeputyDAO;
import cn.hncu.patterns.exercise.dao.factory.F1Factory; public class Client {
public static void main(String[] args) {
DeputyDAO d = F1Factory.getDeputyDAO();
d.createInformation("001", "Lucy");
} }
package cn.hncu.patterns.exercise.dao.api;

public interface DeputyDAO {
/*
* userID-主键。内部生成
* name-username字
*/
public void createInformation(String userID, String name);
}
package cn.hncu.patterns.exercise.dao.factory;

import cn.hncu.patterns.exercise.dao.api.DeputyDAO;
import cn.hncu.patterns.exercise.dao.imp.a.A_f2Factory;
import cn.hncu.patterns.exercise.dao.imp.b.B_f2Factory; public class F1Factory {
public static DeputyDAO getDeputyDAO() {
int type = 1;
if (type == 1) {
return A_f2Factory.getDeputyDAO();
} else if (type == 2) {
return B_f2Factory.getDeputyDAO();
}
return null;
}
}

其它代码超链接:点击打开链接

最新文章

  1. 向下滚动页面加载图片的js
  2. ArrayList、linklist、list的区别
  3. 【ToolGood.Words】之【StringSearch】字符串搜索——基于BFS算法
  4. iframe 透明
  5. File类与FileInfo类
  6. 云计算之openstack ocata 项目搭建详细方法
  7. Python学习笔记(九)
  8. 新建.Net Core应用程序后引用项一直黄色感叹号怎么办?
  9. 重载运算符“ <<” 和“>>” 运算符
  10. CentOs7.5安装PostgreSQL11
  11. LeetCode - Backspace String Compare
  12. Perl中的hash类型
  13. VS编译后直接复制DLL库文件到其他目录下
  14. python 内置函数format
  15. 实现一个简单的shell
  16. php 大文件上传的实现
  17. 旺店通erp系统
  18. UESTC 486 Good Morning (水题+坑!)
  19. [翻译] JTNumberScrollAnimatedView
  20. 使用Secure Boot后,导致VMware无法启动虚拟机

热门文章

  1. 将Firefox设置为使用远程DNS
  2. jquery08
  3. vim-缓存区中打开另外一个文件的方法
  4. javascript 将时间戳格式化
  5. 84.friend友元类
  6. 18.链表管理内存实现c语言自动释放内存
  7. MathType下载和安装(与Visio搭配使用)
  8. GetInvocationList 委托链表
  9. Mybatis 一对多 多对1
  10. POJ——T 2891 Strange Way to Express Integers