公司在搞一个项目使用shh。Action类必须实现一个自定义的接口。类名叫Action ,里面只是定义一些变量,用于定义返回结果集的字符串。
struts.xml
[code="java"]/${ forward }
/WEB-INF/page/${ forward }
[/code]
Action类
[code="java"]
public interface Action {
/**
* 后台页面返回
*/
public static final String MANAGER = "manager";
/**
* 自定义返回
*/
public static final String CUSTOM = "custom";
/**
* 后台输出返回
*/
public static final String MESSAGE = "message";
}
[/code]
在Struts的Action中使用一下代码返回结果集
[code="java"]
return MANAGER;
return CUSTOM;
[/code]
我认为,这样做不好。
1、所有的Action都得实现Action类,不利于松解偶。
2、自定义的Action只是定义了变量,没有抽象方法,不算完整的接口
3、从对象来看,Struts的Action和自定义Action类没有存在和清晰的关系
没有存在“如果你是 Action 必须 实现Action的什么什么”,里面也只有静态变量。
4、我觉得在常量类里面定义这些变量会好一些
唯一存在的好处就是,如果需求改变,需要在Action中做一些初始化的时候,使用implements Action就能很好的处理,但是目前情况来看,只用于return MANAGER;
return CUSTOM;
而已。
后来,我在Constant类中定义这些静态变量,Stuts的Action不在实现自定义Action接口。
[code="java"]
public static final String ACTION_FORWARD_MANAGER = "manager";//后台页面返回
public static final String ACTION_FORWARD_CUSTOM = "custom";//自定义返回
public static final String ACTION_FORWARD_MESSAGE = "message";//后台输出返回
[/code]
在Action中使用
[code="java"]
return Constant.ACTION_FORWARD_MANAGER;
[/code]
不知道大家怎么看待这件事情?