首页
登录 | 注册

2014.5.11 DAO设计模式为什么要用到工厂类?

DAO设计模式为什么要用到工厂类?
Factory类统一管理DAO的实现类:需要获取DAO的实现类时,通过工厂类来获取(便于维护?缺少这块的使用经验,不能理解)
另见百度知道:《dao设计模式 解决的问题是什么
通过DAO设计确让我们软件系统已经数据层和表现层进行了简单分离让我们系统各层次功能更加清晰所我们开始洋洋得意了DAO引入让系统耦合性更加松散表现层再也需要关心台数据操作变化了于我们开始高枕无忧了我们肆无忌惮表现层通过调用DAO来实现我们系统了事实真此我们举例子来看看我们系统否真具有解偶能力了
       现我们有员工管理系统该系统Person.java表示员工对象对应着数据库person表还有用于操作Person对象DAO接口—PersonDAO.java还有PersonDAO实现类PersonDAOImpl.javaPersonDAOImpl.java我们实现了操作Person对象所有方法我们自豪说看我们已经把操作封装PersonDAO了现我们表现层(jsp或者VO操作类)使用PersonDAO personDAO=new PersonDAOImpl()来调用DAO操作我们数据对象了当我们陶醉于自己写优美代码时候项目经理来通知了由于使用Hibernate效率偏低客户开始满了还让我们重新用JDBC再重写遍吧于所有DAOHibernate实现开始全部转换成JDBC实现项目经理建议要破坏现有Hibernate实现通过技术研究来提升Hibernate访问效率于我们开始写了又写了套JDBC实现—PersonDAOJDBCImpl.java现问题出来了表现层大量使用了PersonDAO personDAO=new PersonDAOImpl()全部改成new PersonDAOJDBCImpl()谈何容易我们开始欲哭无泪了解决类似问题呢于我们开始引进DAO工厂模式我们建立类DaoFactory.java对DAO进行统管理
DaoFactory.java:
       public class DaoFactory{
       public static PersonDAO getPersonDAOInstance()
       {
              return new PersonDAOImpl() ;
       }
       //得其DAO实例
       ……
}
表现层通过PersonDAO personDAO=DaoFactory.get getPersonDAOInstance();来实例化DAO实例样问题解决了DAO改变了我们只需要DAO工厂类修改下代码:return new PersonDAOJDBCImpl() ;我们应用快速切换JDBC实现了见利用工厂模式我们系统又进步解耦表现层真无需再关系DAO层变化了切交给DAO工厂来解决
本文网址:http://www.bnee.net/article/466720.html

相关文章

  • 简单工厂模式(Simple Factory)   设计模式使用的例子 https://github.com/LinkinStars/DesignPatternsAllExample   一.定义 定义一个工厂类,它可以根据参数的不同返回不同 ...
  • 设计模式的征途—2.简单工厂(Simple Factory)模式
    工厂模式是最常用的一种创建型模式,通常所说的工厂模式一般是指工厂方法模式.本篇是是工厂方法模式的“小弟”,我们可以将其理解为工厂方法模式的预备知识,它不属于GoF 23种设计模式,但在软件开发中却也应用地比较频繁.此外,工厂方法模式还有一位 ...
  • 前言: 设计模式这本书看过有一段时间了,但是总结的过程一直没有进行,可能也是因为浅尝辄止的学习,实在不知道写些什么.但是学习过程是需要的,虽然是一孔之见但是希望在以后的学习中能及时的回过头来补充和丰富.   从之前的第一次机房收费系统功能实 ...
  • 抽象工厂模式(Abstract Factory)   设计模式使用的例子 https://github.com/LinkinStars/DesignPatternsAllExample   一.定义 抽象工厂模式提供一个创建一系列相关或相互 ...
  • 简单工厂模式是类的创建模式,又叫做静态工厂方法模式.就是由一个工厂类根据传入的参量决定创建出哪一种产品类的实例.一般涉及到三种角色: 工厂类:担任这个角色的是工厂方法模式的核心,含有与应用紧密相关的商业逻辑.工厂类在客户端的直接调用下创建产 ...
  • MyBatis的DAO接口中参数传递建议使用map类型的原因
    如图:图中两个参数在查询结果中并不需要,但是如果使用的一个javaBean对象作为selecetAll的条件参数,如果javaBean中没有这两个参数对应的属性或get方法,在调用这个selecetAll方法时就会报找不到其对应的属性和ge ...
  • 当项目框架SSH(spring.Struts.Hibernate)日落西山时,SSM(spring.SpringMVC.MyBatis)就大行其道,大部分项目都渐渐转至SSM,因此MyBatis也成了Java程序员的必学知识,本文就myba ...
  • 面试官:来给我说一下 Spring 中使用了那些设计模式?
    又叫做静态工厂方法(StaticFactory Method)模式,但不属于23种GOF设计模式之一. 简单工厂模式的实质是由一个工厂类根据传入的参数,动态决定应该创建哪一个产品类. spring中的BeanFactory就是简单工厂模式的 ...