关于在同一个action中实现CRUD多个操作方法的问题

为了减少action的数量,我一般把对单表的CRUD操作放在同一个action中实现了,但问题来了:
这样action的属性(实例变量)就会很多很杂乱,比如一个产品表的操作至少需要注入以下参数
List productList;//查询方法需要
Product product;//增加、修改方法需要
还有分页参数等等
搞的不好还有String productId之类的
这样导致action的逻辑看起来很混乱。

单一职责固然合理,但如果因此而引入大量的action类导致其他的如管理上的问题又是否值得呢?况且单表的CRUD操作之间也可能是有关联的,如删除操作后可能需要调用查询操作来返回一个新的产品列表。
我甚至觉得这是webwork设计上的一个问题,使用无侵入的getter/setter方式和视图间传递(交换)数据本身没有问题,但在action中使用属性(实例变量)也会带来很多的问题,不够清晰,而且搞的最后action也只有每次产生新的对象来保证线程安全问题,还有action的返回值使用String也不够OO,连struts都用了一个ActionForward来封装。

顺便说说我比较希望的方式:
[code]public class ***Action implements Action
{
private ProductManager productManager;
public ModelAndView update(ActionContext context)
{
Product product =(Product)context.getRequestArg("product");
productManager.update(product);
ModelAndView respOjb=new ModelAndView();
respOjb.addModel("product",product);
respOjb.setView("success");
return respObj;
}
.....
}[/code]
和事件机制类似,无状态,代码不比webwork长,有点像Spring的MVC了,但又没有和servlet产生依赖。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值