Dao工厂模式

数据库 waitig 463℃ 百度已收录 0评论

在上一个代码Dao的实现与测试中,如果要修改Dao实现就要修改源代码,很不方便,现在使用工厂模式实现UserDao,代码不依赖具体的类。

1、配置文件

#daoconfig.perporties
userDaoClass=cn.itcast.dao.Impl.UserDaoJdbcImpl

    2、工厂

    package cn.itcast.jdbc.dao;
    
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.InputStream;
    import java.util.Properties;
    
    public class DaoFactory {
    
        private static UserDao userDao = null;
        private static DaoFactory instance = new DaoFactory();
    
        //工厂一般使用单例模式
        private DaoFactory() {
    
            try {
                Properties prop = new Properties(); // Preporties类专门操作preporties文件
    //          InputStream inStream = new FileInputStream(new File("src/daoconfig.preporties"));   //死路径
                InputStream inStream = DaoFactory.class.getClassLoader().getResourceAsStream("daoconfig.preporties");
                prop.load(inStream);
                String userDaoClass = prop.getProperty("userDaoClass");
                Class clazz=Class.forName(userDaoClass);    //将类装载到虚拟机,class对象
                userDao=(UserDao)clazz.newInstance();   //newInstance()方法构造实例
            } catch (Exception e) {
                throw new ExceptionInInitializerError(e);
            }
        }
    
        public static DaoFactory getInstance() {
            return instance;
        }
    
        public UserDao getUserDao() {
            return userDao;
        }
    }
    

    3、测试

    package cn.itcast.jdbc.dao;
    
    import java.util.Date;
    
    import cn.itcast.domain.User;
    
    public class UserDaoTest {
    
        public static void main(String[]args){
            UserDao userDao=DaoFactory.getInstance().getUserDao();
    
            User user=new User();
            user.setBirthday(new Date());
            user.setName("dao name1");
            user.setMoney(1000f);
    
    //      userDao.addUser(user);
    //      User u=userDao.findUser(user.getName(), null);
    //      System.out.println(u.getId());
    
            User u=userDao.getUser(5);
            u.setMoney(30000f);
            userDao.update(u);
    
    //      User u1=userDao.getUser(6);
    //      userDao.delete(u1);
    
        }
    }
    

    现在要更改Dao实现只需要修改配置文件,不需要修改代码。


    本文由【waitig】发表在等英博客
    本文固定链接:Dao工厂模式
    欢迎关注本站官方公众号,每日都有干货分享!
    等英博客官方公众号
    点赞 (0)分享 (0)