• DDD之落地实践


    今天在这儿带大家认识下DDD,一个听起来很垃圾却真的很牛X的设计思想,架构师必备!

    前言

    在日常工作中,接手或维护的工程,大多数使用的是三层架构,即controller、service、dao三层,在使用的过程中,会遇到很多问题:

    • 面向数据建模,面向过程编程,没有真正“面向对象”
    • 只注重结果,不注重过程,service层动辄数百上千行,充斥着过程代码、胶水代码,要么臃肿、要么流水账、要不重复、要么逻辑分散,后期极难维护
    • 代码耦合严重,层与层之间互相调用、逆向调用,牵一发而动全身
    • 代码无法体现业务,在大家都不爱写注释的情况下,随着时间的推移,代码业务逻辑将无人理解,不敢改也改不动。

    那么有没有一个好的解决方案呢?今天要讲的DDD就是一个不错的选择。

    DDD

    DDD,即领域驱动设计,完美的解决了以上问题:

    • 面向领域建模,面向对象编程,代码直接映射现实世界概念,贴近业务,离客户更近
    • 领域逻辑高内聚,符合Java开发原则
    • 技术细节变更如数据库、缓存、定时器等的变更对业务逻辑影响比较小,非常适合插件式架构
    • 代码可读性、可维护性更强,对后续扩展、移植等支持更好,分层更加科学

    DDD的概念,在网上很容易找到,这里就不赘述了。

    然而网上DDD的文章虽然很多,但大多数是理论知识,介绍的无非就是一些名词:战略设计、战术设计、核心域、支撑域、值对象、实体、聚合... 对我们实际落地却没有太多的帮助,下面介绍下我在SpringBoot中应用DDD的落地方案。

    落地方案

    1、代码分层

    代码分层

    • 用户接口层:图中的api包(即controller层,我嫌controller后缀太长...)
  • 相关阅读:
    Spring 中BeanFactory和FactoryBean有什么不同之处呢?
    抛射体运动在游戏开发中的实践
    C++ 入门基础(收尾) 内联函数
    Java IO流(详解)
    16.Hystrix 实例(springcloud)
    【LeetCode】剑指 Offer Ⅱ 第8章:树(12道题) -- Java Version
    Qiankun框架对于微前端的解耦和沙盒与实战探索心得
    static和extern
    监控远程log4.net日志
    C#插入排序算法
  • 原文地址:https://blog.csdn.net/AS011x/article/details/126585498