请问在J2EE项目中生产DAO的工厂类,是工厂单一实例模式吗?
生产出来的DAO是单一实例模式吗?如果是那是为什么?如果不是那又是为什么?各位高手帮小弟解解惑~~在这里先谢谢各位啦~分不多,但心诚....
生产出来的DAO是单一实例模式吗? 如果是 那是为什么?
如果不是那又是为什么? 各位高手帮小弟解解惑~~ 在这里先谢谢各位啦~
分不多,但心诚. 展开
如果不是那又是为什么? 各位高手帮小弟解解惑~~ 在这里先谢谢各位啦~
分不多,但心诚. 展开
3个回答
展开全部
多数设计模式,归根结底就是为了“封装变化”
使得被封装的变化不会影响现有的代码。
比如工厂模式封装了 DAO的不同实现和DAO被创建的方法。
也就是说,你的程序只要面对DAO的接口,而DAO的实现可以随意变化而不会影响使用DAO的那部分逻辑。
也就是说,你可以改变一个字段的名称而只修改DAO实现,甚至你把数据库从Mysql移植到Oracle,都只是修改DAO接口的具体实现,修改工厂方法就可以,原有的业务逻辑无需改变。
你甚至可以写多套DAO的实现,工厂类根据配置加载不同的DAO实现来完成数据库的访问。
说了这么多,是在说为什么会有工厂这样的设计模式,它是为了封装哪部分变化。
而至于工厂产出的产品是不是一定是单例,那是不一定的,是不是单例主要是内存占用和线程安全方面的权衡。
DAO可以是单例,也可以不是。
使得被封装的变化不会影响现有的代码。
比如工厂模式封装了 DAO的不同实现和DAO被创建的方法。
也就是说,你的程序只要面对DAO的接口,而DAO的实现可以随意变化而不会影响使用DAO的那部分逻辑。
也就是说,你可以改变一个字段的名称而只修改DAO实现,甚至你把数据库从Mysql移植到Oracle,都只是修改DAO接口的具体实现,修改工厂方法就可以,原有的业务逻辑无需改变。
你甚至可以写多套DAO的实现,工厂类根据配置加载不同的DAO实现来完成数据库的访问。
说了这么多,是在说为什么会有工厂这样的设计模式,它是为了封装哪部分变化。
而至于工厂产出的产品是不是一定是单例,那是不一定的,是不是单例主要是内存占用和线程安全方面的权衡。
DAO可以是单例,也可以不是。
展开全部
不一定,看需要,DAO一般都是对数据库操作的基础类,只是命名问题。大家都习惯了,所以写程序的时候都DAO,这样大家都能看懂,比较方便。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
举个例子吧:
在用Hibernate开发时使用DAO(Data Access Object)模式实现透明持久化,这里的DAO相当于一种工具,开发时不用考虑持久层的种种,只要专心写dao方法即可,dao构造方法里面封装了SessionFactory构建session工厂,使用了BuildTransaction开始事务,这样用户实例化dao时就已经开始了事物,可以执行sava(),delete()等操作了。
在用Hibernate开发时使用DAO(Data Access Object)模式实现透明持久化,这里的DAO相当于一种工具,开发时不用考虑持久层的种种,只要专心写dao方法即可,dao构造方法里面封装了SessionFactory构建session工厂,使用了BuildTransaction开始事务,这样用户实例化dao时就已经开始了事物,可以执行sava(),delete()等操作了。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询