手写一个简单的工厂模式(二)
图中这里仍然是耦合的
所以首先在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); } }
修改applicationContext.properties文件,新增 userDao = com.baizhiedu.basic.UserDAOImpl
userService = com.baizhiedu.basic.UserServiceImpl
userDAO = com.baizhiedu.basic.UserDAOImpl
https://github.com/godmaybelieve