正品率最高的购物网站,免费seo软件推荐,wordpress主题know,温州谷歌优化公司我最近收到我博客的一位读者Ajay的问题#xff0c;并决定在此处分享我的答案#xff0c;以帮助其他有类似问题的人。 这是来自阿杰的问题#xff1a; 大卫您好#xff0c;我想知道我最近遇到的两种MVC应用程序体系结构之间的区别#xff1a; 1#xff09;在普通的Spri… 我最近收到我博客的一位读者Ajay的问题并决定在此处分享我的答案以帮助其他有类似问题的人。 这是来自阿杰的问题 大卫您好我想知道我最近遇到的两种MVC应用程序体系结构之间的区别 1在普通的Spring MVC教程中使用的...模型视图控制器配置DAO和资源。 2更精细的架构其中将应用程序分为模块例如结帐购物车每个模块都有自己的包其中包含控制器服务接口服务Impl和实体/模型。 谢谢阿杰 好问题 这两个选项不是互斥的实际上它们在设计良好的Web应用程序中是相辅相成的。 您可以将这两个选项视为垂直和水平分隔。 在讨论按模型视图控制器配置DAO等进行的分离时我们讨论基于应用程序的不同层和组件。 技术逻辑设计。 这种分离的原因在于最重要的设计原则之一单一职责和抽象设计模式。 单一责任 单一责任原则规定任何一个组件都只能对一件事情负责例如购物车服务但是为购物车和报告提供单一服务被认为是不良设计并且不应有其他组件负责同一件事行为/状态例如应用程序中功能不相同的购物车服务不应多于一个。 抽象化 抽象设计模式在组件例如数据库之上引入了抽象层例如DAO层同时声明了有关应用程序其余部分如何通过抽象层与该组件通信的协定接口。 这样可以更轻松地替换合同的基础实现例如您的DAO层现在可以使用JPA但是明天您可以以相对较小的努力将其切换到Elasticsearch或Neo4j。 另一方面按模块例如结帐购物车分开是基于业务功能的。 这种分离还依赖于“单一责任”原则和“高内聚与耦合”原则。 内聚和耦合 内聚性是某个模块的组件如何相互组合的程度。 耦合度是指多少组件了解彼此的内部工作情况。 当您根据业务功能将模块分为不同的包时将来可以更轻松地将这些模块重构为它们自己的微服务Web应用程序。 这样他们每个人都可以拥有自己的部署生命周期并且可以独立扩展。 翻译自: https://www.javacodegeeks.com/2018/08/spring-application-architectures.html