就我个人经验来说:我愿意方法缺省是protected,这是为了更好拓展(框架内部),写成public是个人风格吧,因为我不确定哪些方法不会变,都可能会被继承拓展,或者被Adapter模式使用,所以,都用public
重构永无止境,有时间会进一步重构。感谢
[该贴被banq于2009-12-09 14:23修改过]
每次BANQ向框架中增加新的东西的时候,作为使用者也需要了解学习一下这部分新功能。可不可以抽出核心的东西,一些整合的其他功能放在一个功能增强的包里。
这个感觉是对的,JF 6.2之前基本是这个思路,实际上没有对模型进行突出的支持,就象画个圈,圈子外面基本都就绪,圈子里面留白,这个圈子就是Domain Model,原来因为考虑持久层Hibernate等ORM巨大影响力,就连Spring也是将Model委托给Hibernate处理,自己不做模型层,但是当NoSQL运动蓬勃发展,DDD深入理解,6.2则找到一个方式可以介入模型层,同时又不影响任一持久层框架的接入。这应该算是一个创新吧。
具体方式:需要在业务层后面的持久层或Repository中手工加入缓存的Annotation标签@Introdice("modelCache").
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();
}
[该贴被yuhonglei4025于2009-12-16 10:22修改过]