利用工厂模式实现serviec层和dao层解耦

利用工厂模式实现serveice和dao层的解耦,这样就可以不用在service层实例化dao层的对象,当dao层代码发生改变的时候(数据库实现发生改变)直接修改配置文件就不用改变service层的代码。

配置文件:dao.properties

UserDao="com.dao.UserDaoJdbcImp" 如果是oracle实现就可以修改配置文件就行

  

源代码:DaoFactory.java

 1 package com.demo;
 2 
 3 import java.io.IOException;
 4 import java.io.InputStream;
 5 import java.util.Properties;
 6 
 7 import org.hamcrest.Factory;
 8 
 9 //利用工厂模式实现业务层与DAO层解耦
10 public class DaoFactory {
11     private static Properties daoConfig = new Properties();
12     private  static DaoFactory factory = new DaoFactory();
13     private DaoFactory(){
14         //加载配置文件
15         InputStream in = DaoFactory.class.getClassLoader().getResourceAsStream("dao.properties");
16         
17         try {
18             daoConfig.load(in);
19         } catch (IOException e) {
20             throw new RuntimeException();
21         }
22     }
23     
24     //获取工厂对象
25     public static DaoFactory getInstance(){
26         return factory;
27     }
28     
29     public static <T> T createDao(Class<T> clazz){//这里传进来的是DAO接口
30         String name = clazz.getSimpleName();//UserDao
31         String className = daoConfig.getProperty(name);
32         try {
33             T dao = (T) Class.forName(className).newInstance();
34             return dao;
35         } catch (Exception e) {
36              throw new RuntimeException(e);
37         }
38     }
39 }
原文地址:https://www.cnblogs.com/niuchuangfeng/p/9163921.html