图中这里仍然是耦合的
所以首先在BeanFactory类中新增方法getUserDAO()
public static UserDAO getUserDAO(){ UserDAO userDAO = null; try { Class clazz = Class.forName(env.getProperty("userDAO")); //Object obj = clazz.newInstance(); userDAO = (userDAO)clazz.newInstance(); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (InstantiationException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } return userDAO; }
然后修改 UserServiceImpl 类获取userDAO对象的方式,改为 private UserDAO userDAO = BeanFactory.getUserDAO();
package com.baizhiedu.basic; public class UserServiceImpl implements UserService { //private UserDAO userDAO = new UserDAOImpl(); private UserDAO userDAO = BeanFactory.getUserDAO(); @Override public void register(User user) { userDAO.save(user); } @Override public void login(String name, String password) { userDAO.queryUserByNameAndPassword(name, password); } }
原文:https://www.cnblogs.com/yuyu666/p/13581608.html