解决方案一:静态工厂
在XxxDao和XxxDaoImpl之间建立工厂,XxxDao需要什么就从工厂中拿,工厂中提供Dao实现.但现在工厂和UserDaoImpl之间有了耦合
1 class BeanFactory{ 2 public static UserDao getUserDao(){ 3 return new UserDaoImpl(); 4 } 5 public static CustomDao getCustomDao(){ 6 return new CustomDaoImpl(); 7 } 8 }
解决方案二:静态工厂+配置文件xml+反射(这个即为IoC底层实现原理)
1 //<bean id="userDao" class="com.xxx.xxx.UserDaoImpl"> 2 //<bean id="userDao1" class="com.xxx.xxx.UserDaoHibernateImpl"> 3 class BeanFactory{ 4 public static Object getBean(String id){ 5 //解析XML 6 //反射 7 Class clazz = Class.forName("com.xxx.xxx.UserDaoImpl"); 8 return clazz.newInstance(); 9 } 10 }