DAO和Factory模式有什么区别?该怎么处理
2012-04-04 16:14
453 查看
在软件开发中DAO通常是DB获取数据并return一个Bean实例以方便程序使用,最近在看设计模式其中“创建型”模式中的工厂模式定义,所有“产品”都应该用一个工厂来创建哪他们到底有什么不同呢?是不是所有的DAO都可以用Factory模式封装呢?
例如:
某人吃苹果这样的逻辑。
理论上我首先要找到吃苹果的“人”,通常这里要到了一个DAO来查询“某人”,也就是说我要创建一个“人”的对象;模式中说的明白创建对象用Factory那么这个DAO到底是不是这个Factory呢?
------解决方案--------------------------------------------------------
Factory是用来创建对象的。
DAO模式是用来隔离数据访问和业务逻辑的,可以与Factory模式配合使用。
------解决方案--------------------------------------------------------
Factory模式意图:
定义一个用于创建对象的接口,让子类决定实例化哪一个类。Factory Method 使一个类的实例化延迟到其子类。
DAO:
是Data Access Object数据访问接口,数据访问:顾名思义就是与数据库打交道。夹在业务逻辑与数据库资源中间。
DAO其实是另一种设计模式,旨在将所有对数据源的访问操作抽象封装在一个公共API中。就是说,先建立一个接口,程序错误,接口中定义了此应用程序中将会用到的所有事务方法,java环境变量设置。在应用程序中,当需要和数据源进行交互的时候则使用这个接口,并且编写一个单独的类来实现这个接口在逻辑上对应这个特定的数据存储。
------解决方案--------------------------------------------------------
Factory模式:
1、提供创建对象的接口
2、工厂模式相当于创建实例对象的new
DAO:
1、一般基于接口编程
2、将业务逻辑与数据访问分离,即常说的解耦
3、封装与数据库打交道的相关操作
4、提供了可共用的数据库操作接口
------解决方案--------------------------------------------------------
可参考:
请教Abstract Factory 与builder模式的区别 http://www.myexception.cn/cpp/276638.html
相关的主题文章:
extjs表单验证解决思路
android的shape用法请问
can not find a free port to use解决方法
例如:
某人吃苹果这样的逻辑。
理论上我首先要找到吃苹果的“人”,通常这里要到了一个DAO来查询“某人”,也就是说我要创建一个“人”的对象;模式中说的明白创建对象用Factory那么这个DAO到底是不是这个Factory呢?
------解决方案--------------------------------------------------------
Factory是用来创建对象的。
DAO模式是用来隔离数据访问和业务逻辑的,可以与Factory模式配合使用。
------解决方案--------------------------------------------------------
Factory模式意图:
定义一个用于创建对象的接口,让子类决定实例化哪一个类。Factory Method 使一个类的实例化延迟到其子类。
DAO:
是Data Access Object数据访问接口,数据访问:顾名思义就是与数据库打交道。夹在业务逻辑与数据库资源中间。
DAO其实是另一种设计模式,旨在将所有对数据源的访问操作抽象封装在一个公共API中。就是说,先建立一个接口,程序错误,接口中定义了此应用程序中将会用到的所有事务方法,java环境变量设置。在应用程序中,当需要和数据源进行交互的时候则使用这个接口,并且编写一个单独的类来实现这个接口在逻辑上对应这个特定的数据存储。
------解决方案--------------------------------------------------------
Factory模式:
1、提供创建对象的接口
2、工厂模式相当于创建实例对象的new
DAO:
1、一般基于接口编程
2、将业务逻辑与数据访问分离,即常说的解耦
3、封装与数据库打交道的相关操作
4、提供了可共用的数据库操作接口
------解决方案--------------------------------------------------------
可参考:
请教Abstract Factory 与builder模式的区别 http://www.myexception.cn/cpp/276638.html
相关的主题文章:
extjs表单验证解决思路
android的shape用法请问
can not find a free port to use解决方法
相关文章推荐
- jsp接收值为空时,如何处理(大家是怎么看到这篇博客的求告知,有什么疑问想说的欢迎评论)
- 什么是Hibernate的并发机制?怎么去处理并发问题?
- EM64T和64位是不是一个概念啊?他们有什么区别啊,怎么区分啊?
- 全局变量和局部变量有什么区别?实怎么实现的?操作系统和编译器是怎么知道的?
- C和C++怎么分配和释放内存,区别是什么
- java中dao层和service层的区别是什么?
- HTTP请求的过程&HTTP/1.0和HTTP/1.1的区别&HTTP怎么处理长连接
- BCUP.exe进程是什么,居然是木马,怎么处理呢
- 转:HTTP请求的过程&HTTP/1.0和HTTP/1.1的区别&HTTP怎么处理长连接
- C#中子类对父类中虚方法的处理有重写(override)和覆盖(new),他们有什么区别?
- HTTP请求的过程&HTTP/1.0和HTTP/1.1的区别&HTTP怎么处理长连接
- Java中异常处理机制的简单原理和应用,并说明Error与Exception有什么区别?
- 全局变量和局部变量有什么区别?是怎么实现的?操作系统和编译器是怎么知道的?
- <DIV align=名称 ,<DIV style=名称,<DIV id=名称 有什么区别?怎么用?
- jsp脚本和jsp表达式有什么区别?怎么用?
- Android项目中的mipmap文件夹是什么?怎么用?和drawable文件夹有什么区别?
- 全局变量和局部变量有什么区别?是怎么实现的?操作系统和编译器是怎么知道的?
- 请描述Java中异常处理机制的简单原理和应用,并说明Error与Exception有什么区别?
- 在Unicode转换中,_T()与L到底怎么用,有什么区别
- static_cast和reinterpret_cast这两个操作符有什么区别,应该怎么使用这两个操作符