Struts动作类是否违反了srp

时间:2018-01-04 22:05:09

标签: struts2 coding-style single-responsibility-principle

正如我所看到的,Struts 2中的action类有多重职责。

首先,我们经常将验证逻辑放在动作类的验证方法中。 因此,当验证逻辑发生变化时,我们必须打开要修改的类。

其次,action类负责使jsp文件使用结果。因此,当我们打算修改视图时,我们经常需要一起修改动作类和jsp。

第三,行动课必须了解其他课程。用于运行业务逻辑并知道如何处理返回结果的API。

最后,动作类的代码变得一团糟。 有没有更好的方法来使动作类干净? 或者有一本书教授如何编写干净的动作类代码?

2 个答案:

答案 0 :(得分:0)

动作类是一个简单的POJO。您可以根据需要进行清理,只需要实现Action interface

  

处理程序类的默认入口方法由Action接口定义。

     

Action界面:

public interface Action {
    public String execute() throws Exception;
}

答案 1 :(得分:0)

  

首先,我们经常将验证逻辑放在动作类的验证方法中。因此,当验证逻辑发生变化时,我们必须打开要修改的类。

这是你的选择,但我不会。通常,验证逻辑应该通过XML配置来处理。如果你有复杂的验证逻辑,它应该在它自己的处理程序中被隔离,然后用作自定义验证器或由validate中的薄层调用。

S2动作是Web层和业务逻辑之间的胶合代码 - 这包括验证。

  

其次,action类负责使jsp文件使用结果。因此,当我们打算修改视图时,我们经常需要一起修改动作类和jsp。

操作类可以用作业务层和视图层之间的DTO,或者您可以使用单独的实体并使用该操作仅公开该DTO。这几乎无论如何都是必要的,该行动充当请求和响应之间的薄层。你如何选择组织它取决于你。

  

第三,行动课必须了解其他课程。用于运行业务逻辑并知道如何处理返回结果的API。

好的,是的。请求和业务逻辑之间的任何东西都需要知道该怎么做。也就是说,它不会拥有,它只能将数据从请求传输到业务逻辑。映射到业务逻辑根本不需要硬编码。

  

最后,动作类的代码变得一团糟。

那是你的错,而不是S2。