用Factory创建DAO属于工厂模式。Factory中的方法可以让你在不了解DAOImpl的情况下,创建DAOImpl类。根据方法的不同还可以选择不同的DAOImpl,但是你完全不必知道这些DAOImpl如何被初始化,对于使用的人最为方便。

解决方案 »

  1.   

    DAO模式在你目前的使用中好处并不大。因为DAO是工厂模式,所以他只有在多条产品线时才会发挥作用。比如你开发的产品针对多个数据库,你只需要从DAO工厂得到DAO,而在工厂中决定到底是ORACLEDAO还是SYBASEDAO。
      

  2.   

    但是如果只用DAO和DAOImpl照样可以不必了解DAOImpl的情况下创建DAOImpl类啊??
     
    pbMaster(编程无境界) 的话我懂了,只是对于一个数据库为什么照样很多人用DAO呢,如果他真的没有什么过人之处,他就不会如此流行了!!!遍地可见啊!
      

  3.   

    现在factory一词,正在被spring这个框架所吞噬。如果工厂产生的实例,是在工厂内部写死的话,就没有意义了。
      

  4.   

    对DAO没有用过所以也只有学习的份了
      

  5.   

    大部分的设计模式都是为了程序比较方便地被维护。如果你的程序不变,那么你可以不用模式!
    这里的DAO还有另一个用处,比如你现在用CMP作持久化,但如果你发现CMP不行,要该为HIBERNATE。如果你没有用DAO模式,你必须直接改DAOIMPL。
    而如果你用DAO模式,那你就可以再做一个DAOIMPL,修改DAOFACTORY就好了,维护上容易多了。
      

  6.   

    当然如果你说你可以再做一个DAOIMPL,然后改所有的
    DAO dao=new DAOImpl();
    为:
    DAO dao=new DAOImplNew();
    呵呵,那我就服了U!:)
      

  7.   

    yeshucheng(叶澍成(七哥)) :
    Spring的注入固然好,但效率是个问题。Spring的滥用并不可取。
      

  8.   

    此贴不可不看http://forum.javaeye.com/viewtopic.php?t=122
      

  9.   

    正如上面有人说的.用Factory创建DAO属于工厂模式。Factory中的方法可以让你在不了解DAOImpl的情况下,创建DAOImpl类。虽然很多时候Factory里只是简单的new了一个DAOImpl变量,但这样写,就提供了一种可扩展的方法,比如有一天想改为单例模式(我只是假设)或者在生成DAOImpl的时候要进行一系列的初期化处理等等,这样就只需要改Factory里那个方法.不需要每个生成DAOImpl的地方都来改一遍.甚至有一天不需要用DAOImpl了,要用另一个实现DAO的子类取代DAOImpl,也只需要改Factory.