重构原因
- 追求代码的极致简洁性。
- 产品经理能容易理解代码结构。
- 减少对SpringBoot框架的依赖。
- 代码的清晰、简洁和规范性。
领域驱动设计(DDD)的引入
- 通过阅读《重构:改善现有代码的设计》和领域驱动设计相关书籍,如Eric Evans的《领域驱动设计 软件核心复杂性应对之道》和张逸的《解构领域驱动设计》,作者对DDD有了更深入的理解。
DDD工程结构
- 展示了DDD架构的包结构,包括application、domain和infrastructure三层。
- application层:负责协议转换和数据转换,包括控制器、转换器、请求和响应实体等。
- domain层:领域核心层,包括模型、端口、服务等,不依赖于任何框架。
- infrastructure层:基础设施层,包括配置、异常处理、消息监听等。
DDD核心概念
- 统一语言:使用一致的词汇减少沟通成本。
- 限界上下文:定义领域所处环境和边界。
- 聚合根:聚合不同实体和行为,通过聚合根访问内部实体。
- 实体:具有唯一标识的对象。
- 值对象:不通过唯一标识识别的对象。
- 领域、核心域、支撑域、通用域:区分业务领域的重要性和支撑性。
DDD最佳实践
- 六边形架构:强调领域模型的中心地位。
- 整洁架构:强调层次的依赖关系。
- 洋葱架构:通过层次分离关注点。
DDD的优势
- 便于进行单元测试,核心层的自洽性为测试提供基础。
- 保持稳定性,基础层和应用层的变化不影响核心层。
MVC与DDD的选择
- MVC适用于简单业务场景,易于上手,开发效率高。
- DDD适用于复杂业务场景,提供更好的封装性和扩展性,但上手成本高。
总结
- 技术选型应根据业务场景、学习成本、开发效率和质量稳定性来决定,选择最适合自己的技术。