playframework控件中的业务方法

ses*_*ses 5 model-view-controller business-logic playframework

有人可以解释一下,有可能在playfamewok的控制中有一些受保护的,关键的方法,除了:

public static void method-action-name(){}

例如,如果我有这样的方法:

protected static int doSomeWork(){}

这个方法将在method-action-name()中调用.

public static void method-action-name() {
  ...
  int resul = doSomeWork();
  ...
}
Run Code Online (Sandbox Code Playgroud)

我不想有很长的动作方法,所以我想将它拆分为较小的动作方法,然后在其他动作方法中重用它.

我的意思是(从playframework的角度来看)在控制器端有这样的方法而不是在域类中使用它们是否正常?例如,在Spring Framework中,我们使用BP(业务流程)bean.

在playframework控制器中为业务方法提供这样的辅助方法是否可以?

其答案和意见后添加: 例如,如果我有SearchController类,那么该类会是不错的类似方法 preSearch1() , preSearch2()什么搜索()方法会使用,但如果我将这些方法(1,2 )到另一个类然后它应该是类名为 SearchHelper的类吗?在名为/src/helpers的包中..不是很好,因为它们也与搜索有关.但也许然后进入/src/bp/SearchBP(bp =业务流程).然后在 controllers/Search中使用/bp/SearchBP使用一些Model对象和.save()DAO方法(SearchBP可以使用Domain方法,Search类也可以使用Domain方法)

这里的问题:什么类的ant包对这些方法很好?(我只是在示例中看到它 - 总是使用域对象的控制器的非常简单的用法,为什么我问)

Per*_*ega 4

是的你可以。控制器是普通的类,你可以添加任何你想要的。可能不建议用辅助方法来混淆它们,我个人会将它们移至另一个类,但你可以按照你说的去做。

编辑答案:

包的名称是“无关紧要的”,不会改变太多:)。您可以将它们放在controllers.support.search下,这意味着controllers.support是一个带有帮助程序类的包,子包search包含与搜索相关的帮助程序类和方法。

一种替代方案(我更喜欢)是在“服务”包中为此创建一个服务层。你似乎来自 Spring 背景,所以它对你来说应该是很自然的。这些服务根据需要在控制器中实例化,或者可能只是通过静态方法使用,并执行主要业务逻辑。这样控制器只处理“更高级别”的逻辑。

另一种选择是将尽可能多的逻辑移至模型中(避免贫血域模型),并使用控制器中的模型类。

由于开发中的大多数决策,哪一个更好取决于您的经验、代码库中可能的影响/限制、项目中的实践......无论如何,您始终可以重构。只需选择您更习惯的一种(似乎是服务方法)并编码即可:)