被调到新的项目组,理论上算个Team Leader,没有真正的转正,老大最开始跟我说这边的事情我可以做主,但是美国那边有个架构师开始搭了个架子,意思是在这个架子的基础上做,试了下,发现很繁琐,为了增加一个方法,得修改好多个类。这个阶段其实是个过渡阶段,以后我们会使用Web Service,所以我们哟定义Web Service的接口,然后因为是过渡阶段,所以提供了EJB2的过渡方案和原来的系统整合,所以还得改Remote接口,Local接口可以直接从Service接口extends一下就行了,然后得修改Service的实现类,加上原先的架子里面,设计的是Service里面的每个public方法对应一个Operation类,这些类设计成Command模式,方便以后可以更好的进行负载的Dispatch,就这样,给Service增加一个接口,要完全实现得至少修改3个类,增加一个类,而且前两天也提过这个项目使用的Annotation的一个好处,但是这样一来,我要实现那个接口,也得在Finder里面增加方法。最终,我得修改4个类,增加一个类来增加一个Service接口。天啊,这个是我最讨厌的。

下周打算修改这个架子,取消EJB2的临时方案,使用Dynamic Proxy实现Service,同时可以引人Transaction(这个方案原来也用了,但是架构师以Transaction的问题否决了,那个时候还没有想到怎么解决Transaction的问题,前天突然想起来我的EJB单元测试框架就是用的自定义Transaction的),同时也抛弃Finder的那个方案,因为其实我的BaseOperation已经提供了进行Hibernate的查询的方便的基础功能。最重要的是Finder中定义的Query如果有问题的话修改后不能Hot Deploy,如果在Operation的方法体里面的修改就可以Hot Deploy。这样修改后,增加一个接口只需要修改Service然后增加一个Operation类实现就行了,只要改两个地方。