我有一些重复的代码,我在Struts 2中的一些操作使用了这些代码。
毋庸置疑,我希望这段代码只存在于一个地方,所以我会把它收集到一个方法中并把它放在哪里?
最佳做法是什么?我是否为每种类型的辅助方法创建一个辅助类?一个大帮手方法?一个大的静态类?一些静态类?
我正在使用MVC。
我已经在stackoverflow上阅读了其他答案,似乎没有人回答我的问题。
非常感谢你的帮助。
根据要求使用示例更新EDIT:
例如:
我有几行代码在会话中添加了一个arraylist,它存储某个对象被“评级”(对于该会话)。它在整个应用程序中进行了一些操作。
此外,我有一个包含在多个JSP页面上的视图组件,需要从模型中加载一些数据。我需要将代码复制/粘贴到每个动作中(显然想避免这种情况)。
希望澄清一下。如果没有,请告诉我。
答案 0 :(得分:2)
我的一般规则是,如果方法是计算的,换句话说,如果它们只是执行一个函数(比如数学),我将使用静态方法创建一个类并在整个地方使用它。
我有一个实用程序包,我作为一个带有字符串操作和验证功能的jar包含在我的很多项目中,因为它们很少改变。
字符串验证就是一个很好的例子。我有一个Validation类,我用它来检查null或空字符串并返回一个布尔值。我只是从我的动作类中调用它,如:
if(Validation.string(value)){
// do magic - huzzah
}
我尝试将实用程序方法分组到类中,特别是如果我在整个地方使用它。它倾向于使我免于重新输入,在类中搜索我曾经有过的好主意,并在需要更新,修改,重载或覆盖时提供单个代码实例。
答案 1 :(得分:1)
对于包含在多个JSP页面中的视图组件和保存到会话的对象,我创建了一个基本操作类和子操作类,以避免重复代码。
public class BaseAction extends ActionSupport implements SessionAware {
protected Map session;
protected ResourceBundle rb;
// common getters for shared view components and common setters
...
}
-
public class SubAction extends BaseAction {
...