• 工厂设计模式


    工厂模式:http://baike.baidu.com/view/1306799.htm

    参考博客一篇:http://blog.csdn.net/janepen/article/details/6470471

     

     

    我在一个类中要调用一个Dao的接口,需要先实例一个实现了Dao接口的类的对象。关于这个Dao的实现类我只知道之后有可能会用JDBC实现也有可能用Hibernate实现,为了之后不再修改代码。

    1,我将实现类的相关信息放在了一个daoconfig.properties文件中,内容:userDaoClass=cn.itcast.jdbc.dao.impl.UserDaoJdbcImpl。等号后边的部分可以根据需求修改成Hibernate。

    2,然后在需要实例化对象的地方:“UserDao userDao =  ;”等号的右边根据这个配置文件来内容来进行实例化,但是直接在当前类中写起来不方便维护,而且有可能在别的地方也要使用UserDao,对于UserDao来说没必要创建很多实例,一个就足够了,所以我把这些封装起来,用一个工厂类实现:

     

    public class DaoFactory {
        private static UserDao userDao = null;//如果是static顺序一定要在前,不用static也能保证只有一个实例
        private static DaoFactory instance = new DaoFactory();//顺序不能和第一行交换,否则userDao在经历了构造方法之后又会被赋值null

        private DaoFactory() {
            try {
                Properties prop = new Properties();
                InputStream inStream = DaoFactory.class.getClassLoader()
                        .getResourceAsStream("daoconfig.properties");//在此使用其配置文件中的内容
                prop.load(inStream);
                String userDaoClass = prop.getProperty("userDaoClass");
                Class clazz = Class.forName(userDaoClass);
                userDao = (UserDao) clazz.newInstance();
            } catch (Throwable e) {
                throw new ExceptionInInitializerError(e);
            }
        }

        public static DaoFactory getInstance() {
            return instance;
        }

        public UserDao getUserDao() {
            return userDao;
        }
    }

     

    这样实例化对象就简单了:UserDao userDao = DaoFactory.getInstance().getUserDao();

  • 相关阅读:
    django虚拟环境中报E: 无法定位软件包 sqliteman
    创建django项目
    Django虚拟环境安装
    python学习笔记(三)
    python学习笔记(二)
    python学习笔记(一)
    python 类属性和实例属性
    决策树的基本ID3算法
    KNN算法的简单实现
    webClient
  • 原文地址:https://www.cnblogs.com/flying607/p/3461050.html
Copyright © 2020-2023  润新知