Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Model view controller 关于我的MVC方法(数据和域和业务逻辑)的思考。新手_Model View Controller_Spring Mvc - Fatal编程技术网

Model view controller 关于我的MVC方法(数据和域和业务逻辑)的思考。新手

Model view controller 关于我的MVC方法(数据和域和业务逻辑)的思考。新手,model-view-controller,spring-mvc,Model View Controller,Spring Mvc,我正在编写一个医疗计费应用程序,第一次使用MVC(Spring),所以我很难找到一种感觉正确的方法。如有想法/意见,将不胜感激 我的“域”类 医生 病人 主张 业务逻辑 我的控制器类 名单病人 编辑病人 找到的病人 次级瞄准 我的存储库类 IPatientDao 伊多克托岛 伊克莱姆道 我的申请非常“严格”。例如,医生不能删除其他医生的患者。如果患者已为某项服务付费,则无法删除他们 我认为这些规则不应该在控制器中捕获,这会让人感觉脏兮兮的,特别是当一条规则需要在多个控制器中使用时。同

我正在编写一个医疗计费应用程序,第一次使用MVC(Spring),所以我很难找到一种感觉正确的方法。如有想法/意见,将不胜感激

我的“域”类

  • 医生
  • 病人
  • 主张
  • 业务逻辑
我的控制器类

  • 名单病人
  • 编辑病人
  • 找到的病人
  • 次级瞄准
我的存储库类

  • IPatientDao
  • 伊多克托岛
  • 伊克莱姆道
我的申请非常“严格”。例如,医生不能删除其他医生的患者。如果患者已为某项服务付费,则无法删除他们

我认为这些规则不应该在控制器中捕获,这会让人感觉脏兮兮的,特别是当一条规则需要在多个控制器中使用时。同样,我觉得我的DAO对象只用于读写,而不是验证。因此,我制作了一个具有大脑的BusinessLogic对象。所以我可以称之为:

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

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

对我来说,这似乎是保持一切整洁的最好方法


好还是坏?什么更好?

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

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

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

我会调查你是否能帮上忙。也许您可以使用规则引擎在对象中嵌入复杂的行为

最好的建议是从头到尾阅读Spring推荐的分层成语:

  • 压杆动作<弹簧控制器
  • 商务舱~春季服务
  • 禁用DTO-通常不在Spring中使用。它们是EJB1.0遗留下来的反模式
  • DAO/repository是推荐的Spring习惯用法。JPA保持通用性

  • 我喜欢MVC架构。。。这里应该是层的流动

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

    b) 从这个action类调用您的业务类,它为给定的操作执行所有业务逻辑。。。。比如说给病人开账单。。。这会让医生与之联系起来,并说给医生一些佣金

    c) DTO层…应用程序中所有类的getter setter。。。可以被所有层使用。。。病人、账单、医生等可能是少数几个例子

    d) DAO层..与数据库交互的oe。。。它可以使用hibernate、JDBC等进行交互。。。所有的查询都写在里面了吗。。。做所有的缓存工作等等

    因此,层是


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

    查找访问控制列表或ACL以管理资源的权限和“规则”。谢谢kekoav。我想这就是我正在做的。我的控制器要求逻辑类做一些事情。我可以稍微更改模型,使其更像是if(businessLogic.permitedtodelete(patient,内科医生)patientDao.deletePatient(patient);但这仍然为控制器内部的错误留出了空间,以防后续操作发生。嗨,duffymo。感谢您的评论。上面的模型是一个子集,但是我将遇到的典型规则。我将看看AOP和JSR文章看起来很有希望,尽管对我的需求来说可能有些过分(应用程序相对简单)感谢let-Themes-c,虽然我忽略了业务层,或者更确切地说,在我的操作层中嵌入了大部分业务层,但您所描述的听起来有点像我所拥有的。嵌入操作类是Struts的经典缺陷。