025.用户访问session分析:工厂模式讲解以及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


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());  
    }
    
}

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 如果没有工厂模式,可能会出现的问题: ITaskDAO接口和TaskDAOImpl实现类;实现类是可能会更换的;那...
    意浅离殇阅读 1,787评论 0 1
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,083评论 19 139
  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 13,887评论 1 32
  • 为了孩子回来,十天了,每天陪着她,十年在外的生活,已不习惯每时每刻都有人陪,喜欢一个人待着,这十天里也在竭力寻找一...
    黄莎_96e5阅读 1,643评论 0 0
  • 青春,应该是走进一个梦幻王国 遇到那个白马王子 谈场轰轰烈烈的恋爱 随自己疯 任自己耍 该叛逆就叛逆 自己开心...
    教科书下的小蚊子阅读 1,319评论 0 0

友情链接更多精彩内容