私有化构造函数后,使用反射初始化

来源:互联网 发布:淘宝买iphone6靠谱吗 编辑:程序博客网 时间:2024/05/16 01:41
public interface IFactory {    public IUserDao createUserDao();    public IAddressDao createIAddress();

}

//单例模式 私有化构造函数

public class MySqlDaoFactory implements IFactory{    private static MySqlDaoFactory osdf=new MySqlDaoFactory();    private MySqlDaoFactory(){};    public MySqlDaoFactory getInstance(){        if(osdf!=null){            return osdf;        }        return new MySqlDaoFactory();    }    public IUserDao createUserDao(){        return new UserDao();    }    public IAddressDao createIAddress(){        return new AddressDao();    }}

//反射
public class test01 {    @Test    public void testss(){        try {            String dao = "com.whb.test.MySqlDaoFactory";            Class clz =  Class.forName(dao);            Constructor<?> cn=clz.getDeclaredConstructor();            System.out.println(cn);            cn.setAccessible(true);            MySqlDaoFactory m= (MySqlDaoFactory)cn.newInstance();           IAddressDao ia= m.createIAddress();            ia.show();        } catch (Exception e) {            e.printStackTrace();        }    }}


0 0