工厂模式 jdbc 面向接口dao 开发 单例

package com.itheima.utils;

import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;

import com.itheima.dao.UserDao;

/**
 * 引入工厂,用于生成一些对象,为了生成的BeanFactory对象时,
 * 不会生成多个对象(因为BeanFactory作为一个工厂,只要有一个它的对象就可以 了),可以引入单例模式
 * 
 * 2.业务层要调用 Dao的什么 样的实现类,可以放入到配置文件
 * 3.读取配置文件
 * @author wangli
 *
 */
public class BeanFactory {

    private BeanFactory(){}//私有构造
    
    private static BeanFactory instance = new BeanFactory();
    
    //再提供一个公有的方法
    public static BeanFactory getInstance(){
        return instance;
    }
    
    private static String DAO;//用于存储从bean.properties文件 中读取的值
    static{
        try {
            InputStream is = BeanFactory.class.getClassLoader().getResourceAsStream("bean.properties");
            Properties p = new Properties();
            p.load(is);
            DAO = p.getProperty("dao");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    
    public UserDao getUserDaoInstance(){
        try {
            Class clz = Class.forName(DAO);
            return (UserDao)clz.newInstance();//通过反射生成对象  UserDaoMySqlImpl的对象   UserDaoDom4jImpl的对象
        } catch (Exception e) {
            e.printStackTrace();
            throw new RuntimeException(e);
        }
    }
    
    
}

 

转载于:https://www.cnblogs.com/baijin05/p/5072517.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值