利用配置文件,在工厂中创建一个实现类对象

package cn.itcast.usermng.dao;

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

/**
 * 通过配置文件得到dao实现类的名称!
 * 通过类名称,完成创建类对象!(反射完成的!)
 * @author cxf
 *
 */
public class DaoFactory {
    private static Properties props = null;
    static {
        // 加载配置文件内容到props对象中
        try {
            InputStream in = DaoFactory.class
                    .getClassLoader().getResourceAsStream("dao.properties");
            props = new Properties();
            props.load(in);
        } catch(Exception e) {
            throw new RuntimeException(e);
        }
    }
    /**
     * 返回一个具体UserDao的实现类对象
     * @return
     */
    public static UserDao getUserDao() {
        /**
         * 给出一个配置文件,文件中给出UserDao接口的实现类名称!
         * 我们这个方法,获取实现类的类名,通过反射完成创建对象!
         */
        /*
         * 得到dao实现类的名称
         */
        String daoClassName = props.getProperty("cn.itcast.usermng.dao.UserDao");
        
        /*
         * 通过反射来创建实现类的对象 
         */
        try {
            Class clazz = Class.forName(daoClassName);
            return (UserDao)clazz.newInstance();
        } catch(Exception e) {
            throw new RuntimeException(e);
        }
    }
}

总结一句话:

通过类加载器,读取配置文件,获得实现类的地址

继续通过类加载器,加载从配置文件中读取到的类地址,创建该类对象,并返回


 

猜你喜欢

转载自blog.csdn.net/qq_26514509/article/details/85159434