1

我正在编写一个医疗计费应用程序,并且是第一次使用 MVC (Spring),所以我正在努力寻找一种感觉正确的方法。想法/意见将不胜感激。

我的“域”课程

  • 医生
  • 病人
  • 宣称
  • 商业逻辑

我的控制器类

  • 列出患者
  • 编辑病人
  • 查找患者
  • 提交索赔

我的存储库类

  • 病人道
  • 医生道
  • IlaimDao

我的应用程序非常“规则繁重”。例如,医生不能删除其他医生的病人。如果患者已被收费,则不能删除他们。

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

businessLogic.deletePatient(病人,医生);//返回真/假并设置消息

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

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

是好是坏?什么会更好?

4

2 回答 2

1

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

我不认为我会具体化一个 BusinessLogic 对象。太笼统了。

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

我会研究SpringJSR-94 的支持是否可以帮助你。也许您可以使用规则引擎将复杂的行为嵌入到对象中。

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

  1. Struts Action < Spring Controller;
  2. 商务舱~春季服务
  3. Nix DTO - 通常在 Spring 中不使用。它们是 EJB 1.0 遗留下来的反模式。
  4. DAO/repository 推荐使用 Spring 成语。JPA 保持通用性。
于 2009-06-05T23:40:03.880 回答
1

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

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

b)从这个动作类调用你的业务类,它为给定的动作做了所有的商业逻辑......说给病人开账单......这将使医生与之相关联,并说为此给医生一些佣金......

c) DTO 层...您应用程序中所有类的 getter 设置器...可以被所有层使用...患者、账单、医生等可以是几个例子...

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

所以图层是

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

于 2009-06-05T23:40:13.867 回答