使用单例和工厂设计模式实现dao实现层的解耦
来源:互联网 发布:青苹果软件 编辑:程序博客网 时间:2024/04/28 13:02
创建Dao具体实例的工厂:
工厂解耦: 只需在配置文件中改动,而不需要修改源代码
各层之间耦合性极低
使用的设计模式: 单例 和 工厂
*******************************************************************************************
src下面创建一个文件dao.properties
userDao=com.itheima.dao.impl.UserDaoMySQLImpl1(实现类的路径)
*******************************************************************************************
public class DaoFactory {
// 使用饿汉式创建单例类
private static DaoFactory instance = new DaoFactory();
private DaoFactory(){}
public static DaoFactory getInstance(){
return instance;
}
// spring的设计思想
// 读取配置文件中输入的Dao实现方式类的全名称来设置Dao的实现方式
private static String userDaoImplClassName;
static{
try {
InputStream in = DaoFactory.class.getClassLoader().getResourceAsStream("dao.properties");
Properties props = new Properties();
props.load(in);
userDaoImplClassName = props.getProperty("userDao");
} catch (IOException e) {
e.printStackTrace();
}
}
// 使用工厂设计模式来获取Dao的多种实现方式
public UserDao getUserDao(){
try {
return (UserDao) Class.forName(userDaoImplClassName).newInstance();
}catch(Exception e) {
throw new RuntimeException(e);
}
}
}
*******************************************************************************************
有三个dao实现类:
UserDaoDom4jImpl
UserDaoMySQLImpl
UserDaoMySQLImpl1
通过工厂修改service实现调用的dao接口即可,如下:
// 使用修改配置文件中dao实现方式的类名称来获取dao的实现方式
private UserDao dao = DaoFactory.getInstance().getUserDao();
*******************************************************************************************
工厂解耦: 只需在配置文件中改动,而不需要修改源代码
各层之间耦合性极低
使用的设计模式: 单例 和 工厂
*******************************************************************************************
src下面创建一个文件dao.properties
userDao=com.itheima.dao.impl.UserDaoMySQLImpl1(实现类的路径)
*******************************************************************************************
public class DaoFactory {
// 使用饿汉式创建单例类
private static DaoFactory instance = new DaoFactory();
private DaoFactory(){}
public static DaoFactory getInstance(){
return instance;
}
// spring的设计思想
// 读取配置文件中输入的Dao实现方式类的全名称来设置Dao的实现方式
private static String userDaoImplClassName;
static{
try {
InputStream in = DaoFactory.class.getClassLoader().getResourceAsStream("dao.properties");
Properties props = new Properties();
props.load(in);
userDaoImplClassName = props.getProperty("userDao");
} catch (IOException e) {
e.printStackTrace();
}
}
// 使用工厂设计模式来获取Dao的多种实现方式
public UserDao getUserDao(){
try {
return (UserDao) Class.forName(userDaoImplClassName).newInstance();
}catch(Exception e) {
throw new RuntimeException(e);
}
}
}
*******************************************************************************************
有三个dao实现类:
UserDaoDom4jImpl
UserDaoMySQLImpl
UserDaoMySQLImpl1
通过工厂修改service实现调用的dao接口即可,如下:
// 使用修改配置文件中dao实现方式的类名称来获取dao的实现方式
private UserDao dao = DaoFactory.getInstance().getUserDao();
*******************************************************************************************
0 0
- 使用单例和工厂设计模式实现dao实现层的解耦
- 利用工厂设计模式实现业务层和dao层的解耦
- DAO层与Service业务逻辑层的解耦实现之Factory工厂模式
- 黑马程序员 使用工厂模式实现dao层(李勇老师)
- 基本设计模式:单例模式和工厂模式代码实现
- JDBC使用Dao工厂模式读取properties配置文件实现解耦
- 实现DAO 设计模式
- 实现DAO 设计模式
- 实现DAO 设计模式
- 设计模式之 抽象工厂 封装业务逻辑层和Dao层
- 单例模式+工厂模式的c++实现
- Spring 实现两种设计模式:工厂模式和单态模式
- Spring实现两种设计模式:工厂模式和单态模式
- 使用泛型实现单例模式工厂
- DAO设计模式的介绍与实现
- DAO工厂类的实现
- 单例设计模式的实现代码
- java单例设计模式的实现
- 第2周、项目2—程序的多文件组织
- 使用获取subview获取子view
- java 彩票系统
- Unix网络编程中的I/O模型
- Android 的几种数据存储方式
- 使用单例和工厂设计模式实现dao实现层的解耦
- Leetcode #3 Longest Substring Without Repeating Characters
- 40个Java集合面试问题和答案
- 重构与模式:改善代码三部曲中的第三部
- android广播的两种方式!
- mysql中date、datetime、time、timestamp之间的使用
- http://blog.csdn.net/longshenlmj/article/deta
- 系统吞吐量、TPS(QPS)、用户并发量、性能测试概念和公式
- 简单工厂模式和工厂方法模式