暴露与封闭的问题

最近自己构思一个web项目,在做DAO层的时候,想做成对上层(业务核心层)只暴露接口,但是接口的实现都是在DAO层里做,DAO层可以理解成一个独立的项目,也就是实现是封闭在这个层次中的,但是不太清楚JAVA能不能实现这样的想法,我记得在oracle的ADF框架中是可以实现的,是不是利用protect类?

比如:
interface: UserDAO.java
implementation:UserDAOImpl.java
如何实现在别的层次无法实现:UserDAOImpl user = new UserDAOImpl();

不知道说明白了吗?

做不到!

但是你可以使用一个Util类来生成UserDao接口。


Ps:Dao只是持久层上的策略,不要把业务写进去哦!

这个问题,我基本解决了,最后感觉不是java的问题,是开发环境或者是项目组织的问题。
问题的初衷是为了可以分层开发,也就是一部分人做DAO的实现,一部分做业务逻辑。那么可以这样解决——
对于接口项目,只有接口,发布成jar,或者什么。
DAO项目,引入jar,做开发,自己可以做测试。
Service项目,引入jar,最主要的是,项目debug和run的时候需要加入DAO项目。
这样,在开发的时候,service项目的programmer就无法直接使用dao项目中的实现类。
那么现在又出现个问题,就是在哪做接口的实例化?肯定需要xml配置,但是配置文件是在哪个项目中?

>在做DAO层的时候,想做成对上层(业务核心层)只暴露接口,但是接口的实现都是在DAO层里做

使用Ioc或者叫DI容器就可以,如Spring或JF。
你可以拿这两个项目的源码来看看

谢谢二位,还有想问一下,像这种问题,是用SPRING这种直接写好的框架呢?也就是在spring中配置,获取,还是自己写一个,感觉自己写一个不是太难,用成型的是不是会有什么问题,比如版本更替的问题,一些未知的限制等等?