本帖最后由 abcbuzhiming 于 2013-05-26 21:20:10 编辑

解决方案 »

  1.   

    你还真说对了,,每个实现类加了dao接口显得有些臃肿,每次都要两边改动,增加不少维护量,,我上个项目就去掉了,,,spring直接注入给了实现类  就好了。。但是 这样子就违背了dao模式的规范原则,接口的好处就是换一个实现类,改一下配置,不用重新编译,然后就可以直接用了,,  但是不用也可以只替换下class文件也一样。。这就看你自己了。。
      

  2.   

    如果你觉得DAO让你没感觉方便反而繁琐臃肿了,那你去掉好了,模式是死的,人是活的..
    另外可以参考一些开源的J2EE模板, 比如你搜一下 springside  目前用的比较多的是springside3 ,也就是ssh整合的,或者你也可以自己通过泛型提供了一些基本的baseService和baseDAO,这样你就可以不用重复创建无数个逻辑近似的DAO了。
    最新的是springside4,主要是用的spring的mvc, 其中springData 也有很多比较方便的设计,比如你可以直接按照他的规范给你的接口声明方法,不需要写实现...
      

  3.   

    一般情况下,每个DAO中都有增删改查方法,所以都抽出来父类接口,继承之后,自己的接口里可以什么都不写,而你有了自己定义的方法,就到自己的接口中去加两个,也很方便。至于用接口还是用实现,有些框架比较老,还没用到Spring,自己实现的动态代理,那么必须要接口,后面你说的直接上实现类,起码是有了spring和cglib之后。直接用实现类还有一个很大的问题,接口很多是给外部程序远程使用的,比如EJB里的remote,如果你的实现类代码改了呢?再给人家打个包,让人家重新部署?使用接口+实现类,只要方法返回值类型和参数类型不变,实现随便你怎么改。
      

  4.   


    那么,正常一点的做法应该怎么做?谢了,其实我就是想找点合理的设计模式,这就去看看他们的实现方式原来如此,你描述的这种情况的确是需要用接口的,不然更新起来很麻烦,但是我看到的大部分ssh项目都是本地的,没有涉及到你这个场景远程调用,所以我想来想去就是不明白这接口到底好在哪里了,估计他们也是天下代码一大抄