美文网首页Spark大型项目实战
025.用户访问session分析:工厂模式讲解以及DAOFac

025.用户访问session分析:工厂模式讲解以及DAOFac

作者: iarchitect | 来源:发表于2018-08-30 15:56 被阅读0次

    工厂模式讲解

    如果没有工厂模式,可能会出现的问题:

    ITaskDAO接口和TaskDAOImpl实现类;实现类是可能会更换的;那么,如果你就使用普通的方式来创建DAO,比如ITaskDAO taskDAO = new TaskDAOImpl(),那么后续,如果你的TaskDAO的实现类变更了,那么你就必须在你的程序中,所有出现过TaskDAOImpl的地方,去更换掉这个实现类。这是非常非常麻烦的。

    如果说,你的TaskDAOImpl这个类,在你的程序中出现了100次,那么你就需要修改100个地方。这对程序的维护是一场灾难。

    工厂设计模式

    对于一些种类的对象,使用一个工厂,来提供这些对象创建的方式,外界要使用某个类型的对象时,就直接通过工厂来获取即可。不用自己手动一个一个地方的去创建对应的对象。

    那么,假使我们有100个地方用到了TaskDAOImpl。不需要去在100个地方都创建TaskDAOImpl()对象,只要在100个地方,都使用TaskFactory.getTaskDAO()方法,获取出来ITaskDAO接口类型的对象即可。

    如果后面,比如说MySQL迁移到Oracle,我们重新开发了一套TaskDAOImpl实现类,那么就直接在工厂方法中,更换掉这个类即可。不需要再所有使用到的地方都去修改。

    DAOFactory.java

    
    import com.ibeifeng.sparkproject.dao.ITaskDAO;
    
    /**
     * DAO工厂类
     * @author Administrator
     *
     */
    public class DAOFactory {
    
        /**
         * 获取任务管理DAO
         * @return DAO
         */
        public static ITaskDAO getTaskDAO() {
            return new TaskDAOImpl();
        }
        
    }
    
    
    

    TaskDAOTest .java

    
    import com.ibeifeng.sparkproject.dao.ITaskDAO;
    import com.ibeifeng.sparkproject.dao.impl.DAOFactory;
    import com.ibeifeng.sparkproject.domain.Task;
    
    /**
     * 任务管理DAO测试类
     * @author Administrator
     *
     */
    public class TaskDAOTest {
        
        public static void main(String[] args) {
            ITaskDAO taskDAO = DAOFactory.getTaskDAO();
            Task task = taskDAO.findById(2);
            System.out.println(task.getTaskName());  
        }
        
    }
    
    

    相关文章

      网友评论

        本文标题:025.用户访问session分析:工厂模式讲解以及DAOFac

        本文链接:https://www.haomeiwen.com/subject/wrcdwftx.html