如何不用更改底层来实现Dao多样化
使用一个Dao生产类(工厂模式)产生自己所需的Dao;
Factory设计为单例模式:
class DaoFactory{
//自己实例化一个对象,以便其他类调用获得Dao
private static DaoFactory daoFactory;
//将你需要的Dao类的信息放入properties中,为了以后的方便维护
private Properties daoConfig ;
//私有构造,不允许其他类实例化
private DaoFactory(){
//放到初始化中的语句只会被执行一次
InputStream is = DaoFactory.Class.getLoader().getResourceAsStream();
try{
daoConfig.load(is);
}catch(Exception e){
throw new RunTimeException(e);
}
}
//构造方法,使私有实例可以被其他类调用
public static DaoFactory getInstance(){
retuen daoFactory;
}
//为了返回自己所需要的Dao,使用泛型接受所需的Dao
public static <T>T createDao(Class<T> clazz){
String name = clazz.getSimpleName();
String className = daoConfig.getproperties(name); //name = 你自己在properties中配置的键对值
try{
//获得实例
T dao = (T) Class.forName(className).newInstance();
return dao;
}catch(Exception e){
throws new RuntimeException(e);
}
}
}
转载于:https://www.cnblogs.com/sandaoliu/p/3719097.html
如何不用更改底层来实现Dao多样化相关推荐
- 不用更改注册表就可以更改桌面所在的位置
Windows桌面上放的档案太多,最近发现C槽可用空间太少,计算机跑的越来越慢,有什么方法可以把Windows的整个桌面的文件夹移到系统的其他硬盘位置吗?我有方法如下: 方法/步骤 1.不用更改注册表 ...
- 解决execjs经典的 gbk报错问题,不用修改底层源码。
import subprocess from functools import partialsubprocess.Popen = partial(subprocess.Popen, encoding ...
- simulink和c语言开发,Simulink之嵌入式C代码生成-应用层和底层的接口
今天给大家带来的仍然是基于MBD的嵌入式代码生成,主要把应用层和底层接口之间的代码生成配置说一下.本周末会更新功能安全相关,欢迎大家留言交流! 作为一个总是用C写代码的人来说,第一次接触到基于MBD的 ...
- java基础知识【第22期】-- DAO模式和分层
导读: 本篇是JAVA基础系列的第22篇,今天我们梳理DAO模式开发及分层的相关知识. 1.分层开发 分层开发是一种化大为小,分而治之的软件开发方法. 分层开发的好处: 各层专注于自己功能的实现,便于 ...
- 动态代理——拦截器——责任链——AOP面向切面编程底层原理详解(迪丽热巴版)
目录 动态代理模式详解 前言 什么是代理模式 如何进行代理 静态代理 动态代理 JDK动态代理 CGLIB动态代理 拦截器 责任链模式 博客文章版权申明 动态代理模式详解 前言 代理模式是设计模式中非 ...
- mysql反模式_myfat: MyFat是MyBatis的DAO功能增强插件
MyFat让MyBatis更胖 简介 | Intro MyFat是MyBatis的DAO功能增强插件,利用全功能持久层工具jSqlBox来补足MyBatis缺少的功能.MyFat需Java8或以上. ...
- Git总是有没法重置的二进制相同的修改?不用怕!
2019独角兽企业重金招聘Python工程师标准>>> 公元二〇一六年九月二十八日,新中国建国六十七年国庆前三天,有 重大发现! 基本可以确定问题所在: 原因就是 VS2015 创建 ...
- linux更改默认版本,linux - 将某个软件版本设为ubuntu中的默认版本 - Ubuntu问答
问题描述 我目前在Ubuntu 12.04上安装了2个版本的php. 一个用于使用apt-get安装的php 5.3,另一个用于xampp与php 5.5一起安装 当我执行这些命令时: > wh ...
- 【图像处理opencv】_Jupyter 更改文件默认保存目录
问题描述:对于刚开始接触Jupyter的人来说,安装好Jupyter后是类似下面这个样子,已进入界面就是这一大堆文件,感觉很乱.开始我尝试去删除这些文件夹,删除失败,原因是必须要清空文件夹里的目录内容 ...
最新文章
- testng.xml 配置大全
- 学了python可以从事什么岗位-学完Python编程可以从事哪些岗位?
- 设置代理_ie浏览器一键取消自动检测设置并设置代理
- linux git 推送空文件夹
- 【译】An Intro to TrueBit: A Scalable, Decentralized Computational Court.
- MATLAB 人脸定位
- Hive权限与HDFS权限分离导致的一些问题
- (23)FPGA面试题常用逻辑电平
- 软件测试基础课程学习笔记5---软件缺陷概述
- 安卓固件修改工具_【固件升级】给力!安卓6.0以上设备均已升级BOOX OS 2.3系统...
- 在svn中发布多个工程
- python数据分析numpy_Python数据分析之numpy学习(一)
- 【故障分析】基于matlab轴承故障仿真信号时域波形图+幅度谱图【含Matlab源码 123期】
- MISRA C 2004
- 大地高、正高、正常高以及GPS测高等若干问题
- Web 中servlet连接出现404路径错误 //Servlet出现404的解决方法
- android 键盘语音输入,讯飞输入法Android V7.0.4265 长按空格键开启语音输入
- 浙江卫视的万峰纯粹一烂人
- Animation动画学习
- 网页的兼容性解决办法
热门文章
- python进阶21之actor
- KANO模型,一个能解决你工作中90%烦恼的需求分析神器
- 深度剖析 | 基于大数据架构的BI应用
- strlen函数在哪个头文件_第二十七中、字符串处理函数-strlen、strcat、strncat
- vue路由配置src/router/index.js
- python cryptography key加密_python3利用cryptography 进行加密和解密
- eclipse 64位_Eclipse安装教程
- 计算机算法设计与分析 最大子数组问题
- 【caffe】Check failed: status == CUDNN_STATUS_SUCCESS (4 vs. 0) CUDNN_STATUS_INTERNAL_ERRO
- 2018 蓝桥杯省赛 B 组模拟赛(一)I. 天上的星星(二维前缀和)