关于我的MVC方法的思考(数据+领域+业务逻辑)。福利局

时间:2009-06-05 22:59:04

标签: model-view-controller spring-mvc

我正在编写一个医疗账单应用程序,并且我第一次使用MVC(Spring),所以我很难找到一种感觉正确的方法。我们将不胜感激。

我的“域名”类

  • 医生
  • 患者
  • 声明
  • BusinessLogic

我的控制器类

  • ListPatients
  • EditPatients
  • FindPatients
  • SubmitClaim

我的存储库类

  • IPatientDao
  • IDoctorDao
  • IClaimDao

我的申请非常“规则重”。例如,医生不能删除其他医生的病人。如果患者已被收取费用,则不能删除患者。

我认为不应该在控制器中捕获这些规则,这些规则感觉很脏,特别是如果需要在多个控制器中使用规则。同样,我觉得我的DAO对象是用于阅读和阅读。只写,不是验证。因此,我创建了一个拥有大脑的BusinessLogic对象。所以我可以这样说:

businessLogic.deletePatient(患者,医生); //返回true / false并设置消息

检查登录的医生是否有权删除特定患者。

对我而言,这似乎是保持一切整洁的最佳方式。

好还是坏?什么会更好?

2 个答案:

答案 0 :(得分:1)

域名模型对我来说看起来绝对天真,因为它不包括任何与保险公司打交道的东西或者应付账款/应收账款系统的界面。但也许你还处于早期阶段,只是在构建它之前尝试一个简单的模型。

我认为我不会使用BusinessLogic对象。太通用了。

如果你正在使用Spring,我想知道你是否可以更好地利用面向方面的编程来应用你的规则。

我会研究Spring support JSR-94是否可以帮助您。也许你可以使用规则引擎在对象中嵌入复杂的行为。

最好的建议是阅读Spring推荐的分层习语中的章节和经文:

  1. Struts Action<弹簧控制器;
  2. 商务舱〜春季服务
  3. Nix DTO - 通常不在Spring中使用。它们是EJB 1.0的剩余反模式。
  4. 推荐使用DAO / repository Spring成语。 JPA保持通用。

答案 1 :(得分:1)

我觉得MVC架构......这应该是LAyers的流程......

a)动作类......就像我们在Struts中一样...来自网页的所有参数都应该在这个类中处理......所有的验证都应该由表格的验证器来处理......

b)从这个动作类中调用你的业务类,它为给定的动作执行所有的业务逻辑....说给患者计费......这将使医生与之相关并且说给医生一些委托...

c)DTO图层...你应用中所有类的getter setter ...可以被所有层使用...患者,账单,医生等可以是少数例子......

d)DAO层......与数据库交互的东西......它可以使用hibernate,JDBC等进行交互...所有的查询都写在它们中......做所有的缓存等等......

所以图层是

Action调用业务层调用DAO层..DTO可以被所有层使用,也可以作为请求对象发送回JSP页面以显示数据......