A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

  1. public class ObjectFactory {
  2.                   private static ResourceBundle rb;
  3.                   static{
  4.                                  rb=ResourceBundle.getBundle("factory");
  5.                   }

  6.           private static ObjectFactory instance=new ObjectFactory();
  7.        
  8.                   private ObjectFactory(){}
  9.        
  10.                   public static ObjectFactory getInstance(){
  11.                                        return instance;
  12.           }
  13.          //根据配置文件返回不同的对象,当然调用的时候得传个配置文件中的key过来
  14.           public <T>T getUserDaoImpl(String type){
  15.                                   try {
  16.                                                     return (T) Class.forName(rb.getString(type)).newInstance();
  17.                   } catch (Exception e) {
  18.                                                    e.printStackTrace();
  19.                                                    throw new ExceptionInInitializerError(e);
  20.                                 }
  21.           }
复制代码

评分

参与人数 1技术分 +1 收起 理由
冯海霞 + 1 神马都是浮云

查看全部评分

2 个回复

倒序浏览
你这是工厂模式和单例模式
泛型混在一起有点晕,那位同给解释一下
回复 使用道具 举报
希望的曙光 发表于 2013-1-5 01:48
你这是工厂模式和单例模式
泛型混在一起有点晕,那位同给解释一下

这个就是根据所传的type动态返回实例,我们的这个type其实就是properties文件中的key,这个key对应一个类的包名加类名,所以我想要哪个类的实例就可以传个type,然后通过反射动态返回即可。如果不用泛型,那么必须写多个对应的返回不同类型对象的方法。但这些方法99%相同,只是返回对象不同,所以可使用泛型。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马