26.Spark大型电商项目-用户访问session分析-工厂模式讲解以及DAOFactory开发

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/someby/article/details/87982538

目录

工厂模式

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

工厂设计模式

测试工厂模式

DAOFactory.java

TaskDAOTest.java

 


本篇文章将介绍工厂模式以及DAOFactory开发。

工厂模式

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

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

package main.xxx.java.impl;

import main.xxx.java.dao.ITaskDAO;

/**
 * FileName: DAOFactory
 * Author:   hadoop
 * Email:    [email protected]
 * Date:     19-2-27 下午5:32
 * Description:DAO工厂类
 */
public class DAOFactory {
    /**
     * 获取任务管理DAO
     * @return
     */
    public static ITaskDAO getTaskDAO(){
        return new TaskDAOImpl();
    }
}

TaskDAOTest.java

package main.xxx.java.test;

import main.xxx.java.dao.ITaskDAO;
import main.xxx.java.domain.Task;
import main.xxx.java.impl.DAOFactory;

/**
 * FileName: TaskDAOTest
 * Author:   hadoop
 * Email:    [email protected]
 * Date:     19-2-27 下午5:35
 * Description:任务管理DAO测试类
 */
public class TaskDAOTest {
    public static void main(String[] args){
        ITaskDAO taskDAO = DAOFactory.getTaskDAO();
        Task task = taskDAO.findById(1);
        System.out.println(task.getTaskName());
    }
}

 测试的时候在task表中插入一条数据

猜你喜欢

转载自blog.csdn.net/someby/article/details/87982538