2009-11-05 78 views
2

模型和DAO应该如何交互?我正在组建一个简单的登录模块,我不确定将“业务逻辑”放在哪里。如果我将逻辑与数据放在模型中,我将如何访问逻辑?模型(MVC)和DAO应该如何交互?

目前,我有:

  1. 控制器接收形式的数据
  2. 模型即,使用一个分贝表
  3. DAO的简单反射休眠根据 控制器收到的 表单参数执行简单的选择查询。

回答

2

控制器必须找到/加载匹配请求的业务对象并执行它。 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(); 
} 
+0

我同意。我认为控制器就是定义视图或服务与业务逻辑之间的API。将业务逻辑放在控制器中推动它成为“上帝”类。 – 2009-11-09 06:24:30

+0

与使用“策略模式”相比,使用域对象(模型和DAO)与服务层有什么关系?根据我对“战略模式”的理解,它不太合适。 – Dan 2009-11-17 02:10:52

+0

例如,您可以使用一个'Map ',其中'String'部分表示pathinfo(并且如果需要,前缀请求方法)并且'Action'表示适当的动作类(可以静态加载一次使用注释或标记界面查找)。 – BalusC 2009-11-17 15:42:17

1

把它放在控制器中。控制器就像你的应用程序的大部分逻辑被写入的核心。

将业务逻辑放在模型级别上并不好。

0

一个典型的分层会是这样的:

  • 控制器
  • 型号
    • 业务层
    • 数据层(DAO)

该模型将同时包含业务层和数据层,同时保持这些层松散耦合到有意义的范围。控制器将访问该模型,在大多数情况下该模型应该是业务层。控制器最好不能直接访问数据层,但在较小的应用程序中会发生。