模型和DAO应该如何交互?我正在组建一个简单的登录模块,我不确定将“业务逻辑”放在哪里。如果我将逻辑与数据放在模型中,我将如何访问逻辑?模型(MVC)和DAO应该如何交互?
目前,我有:
- 甲控制器接收形式的数据
- 甲模型即,使用一个分贝表
- 甲DAO的简单反射休眠根据 控制器收到的 表单参数执行简单的选择查询。
模型和DAO应该如何交互?我正在组建一个简单的登录模块,我不确定将“业务逻辑”放在哪里。如果我将逻辑与数据放在模型中,我将如何访问逻辑?模型(MVC)和DAO应该如何交互?
目前,我有:
- 甲控制器接收形式的数据
- 甲模型即,使用一个分贝表
- 甲DAO的简单反射休眠根据 控制器收到的 表单参数执行简单的选择查询。
控制器必须找到/加载匹配请求的业务对象并执行它。 Strategy Pattern在这方面很有用。业务对象必须得到DAO的处理和执行该过程的模型。
E.g. (伪,在前端控制器servlet内)
public void process(request, response) {
View view = new View(request, response);
Action action = ActionFactory.getAction(request);
if (action != null) action.execute(view);
view.navigate();
}
把它放在控制器中。控制器就像你的应用程序的大部分逻辑被写入的核心。
将业务逻辑放在模型级别上并不好。
一个典型的分层会是这样的:
该模型将同时包含业务层和数据层,同时保持这些层松散耦合到有意义的范围。控制器将访问该模型,在大多数情况下该模型应该是业务层。控制器最好不能直接访问数据层,但在较小的应用程序中会发生。
我同意。我认为控制器就是定义视图或服务与业务逻辑之间的API。将业务逻辑放在控制器中推动它成为“上帝”类。 – 2009-11-09 06:24:30
与使用“策略模式”相比,使用域对象(模型和DAO)与服务层有什么关系?根据我对“战略模式”的理解,它不太合适。 – Dan 2009-11-17 02:10:52
例如,您可以使用一个'Map',其中'String'部分表示pathinfo(并且如果需要,前缀请求方法)并且'Action'表示适当的动作类(可以静态加载一次使用注释或标记界面查找)。 –
BalusC
2009-11-17 15:42:17