您的位置:首页 > 其它

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

2014-05-11 21:58 197 查看
DAO设计模式为什么要用到工厂类?

Factory类统一管理DAO的实现类:需要获取DAO的实现类时,通过工厂类来获取(便于维护?缺少这块的使用经验,不能理解)

另见百度知道:《dao设计模式 解决的问题是什么

通过DAO

设计



让我们

软件系统已经

数据层和表现层进行了简单

分离

让我们系统各层次

功能更加

清晰

我们开始洋洋得意了

DAO

引入让系统

耦合性更加

松散

表现层再也

需要关心

台数据操作

变化了

我们开始高枕无忧了

我们肆无忌惮



表现层通过调用DAO来实现我们

系统了

事实真







我们

例子来看看我们

系统

否真

具有解偶

能力了


我们有

员工管理系统



该系统



Person.java表示员工



对象



对应着数据库



person表

还有用于操作Person对象

DAO接口—PersonDAO.java

还有



PersonDAO

实现类PersonDAOImpl.java



PersonDAOImpl.java

我们实现了操作Person对象

所有

方法

我们

自豪

看我们已经把操作封装

PersonDAO

我们





表现层(jsp

或者VO操作类

)使用PersonDAO personDAO=new PersonDAOImpl()来调用DAO操作我们

数据对象了

当我们陶醉于自己写

优美

代码

时候

项目经理来通知了

由于使用Hibernate

效率偏低

客户开始

满了

让我们重新用JDBC再重写

遍吧

所有DAO

Hibernate实现开始全部转换成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工厂来解决
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: