zoukankan      html  css  js  c++  java
  • 利用工厂模式实现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 }
  • 相关阅读:
    commands.getstatusoutput和subprocess.call结果不一致
    win10 企业版 2015 长期服务激活
    pycharm设置护眼模式
    实战--滚动菜单
    javascript中this的用法
    jQuery之remove与empty的区别
    clone方法案例实践
    jQuery内部插入与外部插入
    jQuery文档处理
    2020/02/11星期二复习
  • 原文地址:https://www.cnblogs.com/niuchuangfeng/p/9163921.html
Copyright © 2011-2022 走看看