JavaWeb工程下,基于代理模式的两种层次结构比较分析

对于JavaWeb工程,个人认为很多人后台处理是非常高深的事情,其实通过这段时间的理解与实践,我个人感觉要想把后台写的漂亮,无非需要注意两点:一是对于javase的编程理解,二是对框架搭建的理解。在这两点之上我认为贯穿整个后台设计之中的是编程人员时刻清晰的思路。下面是我对近期发现的两个web框架搭建方法的一些感悟,其实本人也是菜鸟一只,理解比较肤浅,不过对于刚刚入门的同僚,我相信还是有帮助的。


JavaWeb工程下,基于代理模式的两种层次结构比较分析JavaWeb工程下,基于代理模式的两种层次结构比较分析

以上是两种布局:

第一种,是structs框架。util,filter,dbc都是工具包,主要是封装了一些常用的方法,如编码适配器,数据库连接等。而需要关注的是model,action,dao,及dao-impl和proxy两个包。这里面,通过分析,可以理解为action是业务层,负责处理业务,对于action,里面调用的都是proxy代理类里面的方法,所以proxy属于是业务层和持久层的一个中间逻辑层,主要的作用就是静态代理。当继承了dao接口的impl类需要做处理的时候,我们可以在proxy之中做,然后调用的方法不变。但是如果批量做处理的时候,这种方法就显得捉襟见肘了。然后是model类,这里面主要是相当于工厂模型中的vo,封装了对象,然后实现get和set方法。但是个人认为同样纯在一些问题。即持久层对象并未和业务层对象相分离的方法。尤其当以后用到hibernate需要严格将对象和表结构相映射的时候,就会出现问题。

第二种,严格将程序分为业务层和持久层,主要应用了ssh框架。相比较可以发现,这种结构有一个好处,就是将持久层对象和业务层对象相分离,有助于对象的抽象。大家可以发现,这回业务层的action直接调用的是继承dao的impl方法。没有出现代理类。这是因为这种结构应用了spring提供的aop,也就是一种动态代理的手段,在配置文件中将方法进行装配。

这两种方法都有优点和不足,在实际应用中我们应该选择最合适的方法进行分析。如果有理解失误的地方忘各位批评指正。