java – 在MVC模式中将模型和动作划分为类的最佳方法是什么
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – 在MVC模式中将模型和动作划分为类的最佳方法是什么,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2107字,纯文字阅读大概需要4分钟。
内容图文
![java – 在MVC模式中将模型和动作划分为类的最佳方法是什么](/upload/InfoBanner/zyjiaocheng/707/02a6425d619f4620bb86cce669350148.jpg)
假设我有一个拥有大量字段的Employee类.我有很多与db相关的动作,如CRUD,过滤器等.
在MVC模式中,所有这些东西都可以放在一个Model部分中.但是,如果我有很多领域和很多行动,那该怎么办呢?如何正确地将基本对象人员(字段,基本方法:getters& setters,toString等)和动作拆分为类.像Employee和EmployeeActions?还是最好的方法?需要你的经验)
解决方法:
原则上,例如domain model,模型层,例如“模型”,应分为以下几个部分:
> Entities,例如域对象(如您的员工)和value objects.每个实体不仅包含特定数据,而且最重要的是包含与其相关的必需行为(仅限).
> Data mappers抽象(如EmployeeMapperInterface).它们的实现(如EmployeeMapper)不应该是域层的一部分.数据映射器是负责实体和数据库(或任何其他持久层)之间的数据传输的对象.因此,他们是唯一知道如何通过其API与数据库通信的组件.例如.它们包含SQL语句/调用.这些语句不应该是实体的任何部分,因为多个应用程序可以使用相同的实体,并且并非所有应用程序都需要数据库访问,或者与另一个应用程序需要相同的数据库访问.实体根本不应该知道任何持久性.
>作为可选的抽象层:repository抽象(如EmployeeRepositoryInterface,或EmployeeCollectionInterface或EmployeesInterface).它们的实现(如EmployeeRepository,EmployeeCollection或Employees)也不应驻留在域层中,而应位于其边界之外.它们是具有从模型组件隐藏持久性类型的角色的构造,并具有两个功能/特征:1)它们将实体从域模型转移到数据映射器,以便更新db数据和2)它们存储使用相应的数据映射器从db“获取”的实体集合,使其可用于域层.
>服务,作为service layer的一部分(如AuthorizationService).可以有应用程序服务,如果需要,还可以使用域服务(前者使用).这些服务处理所有其他域层组件,以便正确响应用户要求.从用户的角度来看,它们是域模型的唯一门户.
>外部服务的抽象(如MailServiceInterface,或PaymentServiceInterface,或PrintingServiceInterface).它们的实现(如ExampleMailer,或PayPalPayment或PdfPrinter)位于域模型之外.
资源:
> How should a model be structured in MVC?
> Keynote: Architecture the Lost Years – Robert Martin给出的演示文稿,根据Creative Commons Attribution ShareAlike 3.0许可.
> The Clean Architecture罗伯特·马丁
> Interaction Driven Design
> Unbreakable Domain Models(slides)除此之外:The Clean Code Talks – Inheritance, Polymorphism, & Testing.
> Brainstorming your way from a Monolith to a Clean Architecture by Victor Rentea
内容总结
以上是互联网集市为您收集整理的java – 在MVC模式中将模型和动作划分为类的最佳方法是什么全部内容,希望文章能够帮你解决java – 在MVC模式中将模型和动作划分为类的最佳方法是什么所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。