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包对这些方法很好?(我只是在示例中看到它 - 总是使用域对象的控制器的非常简单的用法,为什么我问)
是的你可以。控制器是普通的类,你可以添加任何你想要的。可能不建议用辅助方法来混淆它们,我个人会将它们移至另一个类,但你可以按照你说的去做。
编辑答案:
包的名称是“无关紧要的”,不会改变太多:)。您可以将它们放在controllers.support.search下,这意味着controllers.support是一个带有帮助程序类的包,子包search包含与搜索相关的帮助程序类和方法。
一种替代方案(我更喜欢)是在“服务”包中为此创建一个服务层。你似乎来自 Spring 背景,所以它对你来说应该是很自然的。这些服务根据需要在控制器中实例化,或者可能只是通过静态方法使用,并执行主要业务逻辑。这样控制器只处理“更高级别”的逻辑。
另一种选择是将尽可能多的逻辑移至模型中(避免贫血域模型),并使用控制器中的模型类。
由于开发中的大多数决策,哪一个更好取决于您的经验、代码库中可能的影响/限制、项目中的实践......无论如何,您始终可以重构。只需选择您更习惯的一种(似乎是服务方法)并编码即可:)
| 归档时间: |
|
| 查看次数: |
1215 次 |
| 最近记录: |