Model view controller playframework控件中的业务方法

Model view controller playframework控件中的业务方法,model-view-controller,playframework,business-logic,Model View Controller,Playframework,Business Logic,有人能解释一下在playfamewok的控球中是否有可能使用一些有潜力的方法,除了: 公共静态void方法-action-name(){} 例如,如果我有这样的方法: 受保护的静态int-doSomeWork(){} 此方法将在方法操作名称中调用 我不希望有长动作方法,所以我希望将其拆分为较小的动作方法,然后在其他动作方法中重用它 我的意思是(从playframework的角度来看)在控制器端有这样的方法而不是在域类中有这样的方法可以吗?例如,在Spring框架中,我们使用BP(业务流程)bea

有人能解释一下在playfamewok的控球中是否有可能使用一些有潜力的方法,除了:

公共静态void方法-action-name(){}

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

受保护的静态int-doSomeWork(){}

此方法将在方法操作名称中调用

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

我的意思是(从playframework的角度来看)在控制器端有这样的方法而不是在域类中有这样的方法可以吗?例如,在Spring框架中,我们使用BP(业务流程)bean

在playframework控制器中为业务方法提供这样的帮助器方法可以吗

在回答和评论后添加: 例如,如果我有SearchController类,那么对于该类,最好有preSearch1()preSearch2()之类的方法search()方法将使用什么,但是如果我将这些方法(1,2)移动到另一个类,那么它应该是名为SearchHelper的类?在名为/src/helpers的包中。。不是很好,因为它们也与搜索相关。但随后可能进入/src/bp/SearchBP(bp=业务流程)。然后在controllers/Search中,我使用/bp/SearchBP使用一些模型对象和.save()DAO方法(SearchBP可以使用域方法,Search类也可以使用域方法)


这里的问题是:什么类ant包适合这些方法?(我只是在示例中看了一下——使用域对象的控制器的用法非常简单,这就是我问的原因)

是的,你可以。控制器是普通类,您可以添加任何需要的内容。可能不建议使用helper方法将它们弄得杂乱无章,我个人会将它们移到另一个类中,但您可以按照自己的说法来做

编辑答案:

包的名称为“无关”,不会对其进行太多更改:)。您可以将它们放在controllers.support.search下,这意味着controllers.support是一个包含帮助器类的包,子包搜索包含与搜索相关的帮助器类和方法

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

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


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

任何复杂到可以描述为“业务逻辑”(而不是“表示逻辑”)的行为都属于模型,而不是控制器。如果您的模型只与一组数据库表进行映射,那么它的工作就不正常。特别是权限和访问控制之类的东西,应该由模型强制执行。

完全同意!通常,这些实用程序是带有静态函数的简单类,可以存储在src中,而不是ex.thx的控制器中!请参阅:“发表评论后添加”我添加了添加问题。我决定不使用贫血领域模型,即使用与特定领域/模型相关的所有方法。我调查了这个话题,认为它适合我的需要
public static void method-action-name() {
  ...
  int resul = doSomeWork();
  ...
}