请问JF框架的一些类为什么不写成包私有的?

今天在学习JF5.5,看到几乎都是PUBLIC的类。这一点我很迷惑,很多开源框架应该只暴露很少的公共接口才对。还有各个包之间的引用似乎很多。。。一些类还很相似,应该可以重构吧,虽然他们的业务意义不一样。

多谢,现在框架一般只通过XML或Annotation来暴露,通过接口暴露容易导致非POJO

就我个人经验来说:我愿意方法缺省是protected,这是为了更好拓展(框架内部),写成public是个人风格吧,因为我不确定哪些方法不会变,都可能会被继承拓展,或者被Adapter模式使用,所以,都用public

重构永无止境,有时间会进一步重构。感谢
[该贴被banq于2009-12-09 14:23修改过]

哦,也是。最近看到JF框架变动比较频繁,不停的添加新功能。

呵呵,是的,变化快,新技术很多,如何延续以前精华,加入新的生命,一直是JF关注重点,而且要做到“小而美”,所以不是有新技术就加入,目前看来向DDD+异步架构方向发展是对的。

由于对EJB不是很熟悉,我在TargetMetaDef接口去掉isEJB()方法,并屏蔽了EJB的一些类来学习。框架写的非常好。然而我隐约觉得JF框架并没有突出核心的东西。。。而是把很多其他框架整合在一起,就是为了应用的快速开发。

每次BANQ向框架中增加新的东西的时候,作为使用者也需要了解学习一下这部分新功能。可不可以抽出核心的东西,一些整合的其他功能放在一个功能增强的包里。

2009年12月11日 16:03 "yuhonglei4025"的内容
然而我隐约觉得JF框架并没有突出核心的东西。。。而是把很多其他框架整合在一起,就是为了应用的快速开发。

这个感觉是对的,JF 6.2之前基本是这个思路,实际上没有对模型进行突出的支持,就象画个圈,圈子外面基本都就绪,圈子里面留白,这个圈子就是Domain Model,原来因为考虑持久层Hibernate等ORM巨大影响力,就连Spring也是将Model委托给Hibernate处理,自己不做模型层,但是当NoSQL运动蓬勃发展,DDD深入理解,6.2则找到一个方式可以介入模型层,同时又不影响任一持久层框架的接入。这应该算是一个创新吧。

具体方式:需要在业务层后面的持久层或Repository中手工加入缓存的Annotation标签@Introdice("modelCache").

看到类:CommonsPoolAdapter,如下:

public class CommonsPoolAdapter implements Pool {
private final GenericObjectPool pool;

public CommonsPoolAdapter(GenericObjectPool pool) {
this.pool = pool;
}

public void setMaxPoolSize(int maxPoolSize) {
pool.setMaxActive(maxPoolSize);
}

public int getMaxPoolSize() {
return this.getMaxPoolSize();
}

public Object acquirePoolable() throws Exception {
return this.pool.borrowObject();
}

public void releasePoolable(Object object) throws Exception {
this.pool.returnObject(object);
}

public int getNumActive() {
return this.pool.getNumActive();
}

public int getNumIdle() {
return this.pool.getNumIdle();
}

}

我注意到了方法
public int getMaxPoolSize() {
return this.getMaxPoolSize();
}

觉得应该是
public int getMaxPoolSize() {
return this.pool.getMaxPoolSize();
}

呵呵,6.2版本已经修复了。
[该贴被yuhonglei4025于2009-12-16 10:22修改过]