设计模式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;
}
}
其它代码超链接:点击打开链接