【免费】小傅哥 DDD 开发小册
作者:小傅哥
博客:https://bugstack.cn
沉淀、分享、成长,让自己和他人都能有所收获!
大家好,我是技术UP主小傅哥。
如果在面试的时候,面试官问你DDD是什么,你怎么解释?是不是感觉DDD的资料也看了不少,但好像还没有一个定义给DDD,所以炸一听这有的问题的时候,还真有点慌。
那DDD是什么呢?
关于DDD是什么,在维基百科有一个明确的定义。"Domain-driven design (DDD) is a major software design approach." 也就是说DDD是一种主要的软件设计方法。而软件设计涵盖了;范式、模型、框架、方法论。
- 范式(paradigm)指的是一种编程思想。
- 模型(model)指的是对现实世界或者问题的抽象描述。
- 框架(framework)指的是提供了一系列通用功能和结构的软件工具。
- 方法论(methodology)指的是一种系统的、有组织的解决问题的方法。
所以,DDD不只是只有指导思想,伴随的DDD的还包括框架结构分层。但说到底,这些仍然是理论讨论。在没有一个DDD落地项目物参考下,其实大部分码农是没法完成DDD开发的。所以小傅哥今年花费了5个月假期/周末的时间,完成的《DDD简明开发教程》,帮助大家落地DDD编码。
小册地址已放到文末,此外还能获取到基于DDD架构开发的实战项目。
一、能学到啥
因为DDD本身有很多的方法论,指导着框架结构的设计,从而控制着工程模块间的平衡。这种平衡的约束,起到了很好的防腐作用,天然的控制了职责的分离。不过也因为有了这些约束,很多初次上手DDD的研发伙伴不知道怎么下手了。所以以下这些内容,则是帮你进入DDD开发;
- 为你,提供整个DDD简单版、DDD标准版,脚手架使用,并配合提供 docker compose 一键开发环境安装。这样你再使用的时候就可以更加容易进入了。
- 为你,深度讲解DDD分层结构、DDD全模块调用链路、MVC2DDD的升级关闭和对比、DDD领域模型(账户/支付)的设计和编码。
- 为你,拆分独立案例,讲解应用启动、配置加载、各类技术框架和分布式技术栈,在DDD分层结构下具体到每个模块中的使用手段。如;MyBatis、Dubbo、RocketMQ、Redis、Zookeeper、Sharding-JDBC、XXL-Job等。—— 这些案例都来自于业务场景中的常用使用方式,非常具有代表性。
- 为你,讲解工程开发中常用类库和工程的测试压测处理方案。如;Guava、OKHTTP、Mock、JMeter、AB、Siege等。这些东西是为了更好的完成代码交付。
- 为你,工程开发最后的阶段,提供;Docker、Portainer 云服务操作,以及包括对工程的全链路监控学习。此外基础的 IntelliJ IDEA、Maven、Git、Github/Gitcode/Gitee,的使用教程。
以上,这些内容的学习,可以让你既掌握DDD架构的开发使用,又能快速的学会各项基础技术栈和分布式技术栈的运用,还能学习到监控、压测、云服务操作。可以说是一举多得!嘎嘎强!
二、小册演示
可以这么说,这套DDD的小册课程是非常基础入门,有覆盖的极其全面。哪怕是小白研发,也能完全跟着走下来。既有文章又有视频,每一个小知识点都是一个独立的案例讲解。以下就是DDD小册内的一些截图,可以参考看下。
1. 工程结构模型
2. 架构对比参照
3. 模块调用链路
4. 领域模型设计
5. 系统压测讲解
6. 应用监控部署
对此DDD小册感兴趣的伙伴,也可以进入小傅哥的B站进行视频学习。
三、小册大纲
小傅哥在初学阶段也看过网上的案例,可以说是鱼龙混杂,如果刚好自己是初学还不太懂,那么几乎要花费整个1天的时间,一遍遍百度搜索出各种有毛病的案例。才能完成自己的学习。所以基于这样的经历,小傅哥提供了完整的、前面的、成体系化的一整套学习案例。
工程脚手架(1)
- DDD 脚手架
系统架构(5)
开发环境(6)
开发技术(11)
常用类库(3)
工程测试(2)
质量监控(1)
发布部署(2)
全小册目前发布了31节内容,分为脚手架、架构、环境、技术、类库、测试、监控、部署,8部分内容。这样整个一条龙的学习,可以让大家对于技术的积累更为扎实。以后还会结合实际场景所需,扩展小册内容。如果有小伙伴需要用到的内容,不在这里,也可以提出建议或者贡献。
四、编程经验
- 并不一定非得需要所有人一起做领域设计。一个研发有时候就够。
因为铁打的研发,流水的产品。最熟悉系统和业务的,往往是最核心的研发。尤其是大公司变动较多的情况下,每每产品更替,都需要与研发请教整体流程。 - DDD难落地,不是DDD有多难,是没经验的人做DDD,不清楚范式、模型、框架、方法论,只能抱着理论给团队伙伴讲,并且在很多细节使用上没法把控,导致越来越难维护。
上DDD==上一坨屎。 - 不是非得多复杂的系统才能用DDD,简单系统使用DDD,也会更好的维护。因为很多没彻底做过DDD的开发的,甚至并不知道domain的核心是什么,眼里只有聚合、聚合、聚合。
- 能在MVC结构下写代码不错的人,到DDD可以写的更好。DDD只是软件设计方法的改变,但不决定原本代码垃圾的人,换个结构代码就牛逼了。
- 不具备DDD结构设计和调整的研发,会生搬硬套DDD。所以没法根据自身业务需求调整分层的结构,如在domain领域编排复用极低的场景,可以去掉application/case层,这样会减少大量的对象转换。
- 千万别说设计模式没用,好好看看一些高质量的框架源码,对于;分治、抽象、知识(设计原则、设计模式)的运行,是有多好。没用设计模式的DDD,就像没有家具的四居室,卧室里可以安装马桶。厨房里可以放个床。
DDD开发小册;https://bugstack.cn/md/road-map/road-map.html
此外加入小傅哥【星球:码农会锁】还有DDD应用级实战项目课程,通过这些课程的实操,对实际业务场景进行架构、设计、编码、上线,更加扎实的掌握DDD领域驱动设计的运用。项目体验地址:https://gaga.plus - 小傅哥为星球项目部署的演示平台。
【免费】小傅哥 DDD 开发小册的更多相关文章
- 牛掰,在IDEA中,你可以安装小傅哥写的插件了!
作者:小傅哥 博客:https://bugstack.cn 沉淀.分享.成长,让自己和他人都能有所收获! 一.承认你优秀很难 很多码农,把路走窄了 捧一个,喷一个,很多码农都不会多一点思路看问题,总是 ...
- 《重学 Java 设计模式》PDF 出炉了 - 小傅哥,肝了50天写出18万字271页的实战编程资料
作者:小傅哥 博客:https://bugstack.cn 沉淀.分享.成长,让自己和他人都能有所收获! @ 目录 一.前言 二.简介 1. 谁发明了设计模式? 2. 我怎么学不会设计模式? 3. 适 ...
- 写个小程序01 | 注册微信小程序
出于兴趣和学习目的,我想自己做一个基于"子弹笔记(Bullet Journal)"的小程序.由于个人开发经验很有限,只在课程作业中写过 web 前端,所以也不知道多久能写出来(逃) ...
- Android应用开发-小巫CSDN博客client之嵌入有米广告
Android应用开发-小巫CSDN博客client之嵌入有米广告 上一篇博客给大家介绍怎样集成友盟社会化组件,本篇继续带来干货,教大家怎样嵌入广告到应用中去.小巫自称专业对接30年,熟悉各大渠道SD ...
- 基于微信小程序的系统开发准备工作
腾讯推出微信小程序也有一段时间了,在各种行业里面也都掀起一阵阵的热潮,很多APP应用被简化为小程序的功能迅速推出,同时也根据小程序的特性推出各种独具匠心的应用,相对传统的APP来说,微信小程序确实能够 ...
- 微信小程序<每日查看>开发总结
之前一直在做iOS平台的App和SDK开发,发现微信小程序还蛮有意思的,花了将近几天的时间,从看书学习到萌发想法,最后开发出一款小应用,现在花点时间总结一番!作为自我勉励和后续继续学习动力- 先上效果 ...
- 微信小程序之云开发一
最近听说微信小程序发布了云开发,可以不需要购买服务器,就能开发小程序和发布小程序,对于动辄千元的服务器,极大的节约了开发成本,受不住诱惑,我就开始了小程序的云开发,目前项目已上线,亲测不收费,闲不住的 ...
- Java生鲜电商平台-优惠券功能设计与开发(小程序/APP)
Java生鲜电商平台-优惠券功能设计与开发(小程序/APP) 说明:Java生鲜电商平台-优惠券功能设计与开发(小程序/APP) 目录 1.项目背景与需求分析 2.需求目的与功能点列表 3.业务逻辑 ...
- 快速了解微信小程序的使用,一个根据小程序的框架开发的todos app
微信官方已经开放微信小程序的官方文档和开发者工具.前两天都是在看相关的新闻来了解小程序该如何开发,这两天官方的文档出来之后,赶紧翻看了几眼,重点了解了一下文档中框架与组件这两个部分,然后根据简易教程, ...
- 微信小程序开发初体验--教你开发小程序
微信小程序 微信小程序面世以来受到的关注颇多,直到最近我才动手尝试进行了小程序的开发,总体上感觉还是不错的,有一点不适应的就是要摆脱Web APP开发对DOM的操作.在这里我就把我是如何利用API开发 ...
随机推荐
- Django: You are trying to add a non-nullable field 'name' to mainnav without a default; we can't do that (the database needs something to populate existing rows).
错误原因: 语句中缺少默认值 class Main(models.Model): img = models.CharField(max_length=255) name = models.CharFi ...
- Java BigDecimal 分析
1.使用理由: Double类和Float类可以对16位有效数字的数进行精确运算,但对于超过16位有效数字的数,会丢失精度.所以使用BigDecimal类来精确计算超过16位有效数字的数. 2.引入包 ...
- Prism报错
Rules.Default..WithoutFastExpressionCompiler()报错 说没有找到容器 1.查看Prism.Wpf源码 获取DryIoc容器规则 2.证明项目中出现了另外一个 ...
- vscode 中 Markdown 粘贴图片的位置
背景 自从 typora 开始收费后, 不少人开始寻找其他的 Markdown编辑器, 我觉得 vscode 就是一个很不错的选择 虽然不能像 typora 在Markdown预览中编辑, 但是左右布 ...
- 《SQL与数据库基础》09. 事务
@ 目录 事务 简介 操作 方式一 方式二 四大特性(ACID) 并发事务问题 事务隔离级别 本文以 MySQL 为例 事务 简介 事务是一组操作的集合,它是一个不可分割的工作单位.事务会把所有的操作 ...
- 谈一谈电商api的未来
随着互联网的飞速发展,电商行业已经成为了现代消费的主流模式.在电商平台上,商品的交易.物流.支付等环节都需要使用API(Application Programming Interface)接口来实现信 ...
- Go开始:Go基本元素介绍
本文深入探讨了Go编程语言中的核心概念,包括标识符.关键字.具名函数.具名值.定义类型.类型别名.包和模块管理,以及代码块和断行.这些元素是构成Go程序的基础,也是编写高质量代码的关键. 关注Tech ...
- 本地项目上传到Git仓库
1. 进入项目主目录,打开Git Bash,执行以下命令,将项目变为一个git管理的项目: $ git init 执行成功后,会在项目根目录生成一个.git的文件夹. 可以执行以下命令查看项目状态: ...
- Appilot发布:打造面向DevOps场景的开源AI助手
今日,数澈软件Seal (以下简称"Seal")宣布推出面向 DevOps 场景的 AI 助手 Appilot,这款产品将充分利用 AI 大语言模型的能力为用户提供变革性的部署和应 ...
- stm32开发笔记
STM32F103C8T6单片机简介 标准库与HAL库区别 寄存器 寄存器众多,需要经常翻阅芯片手册,费时费力: 更大灵活性,可以随心所欲达到自己的目的: 深入理解单片机的运行原理,知其然更知其所以然 ...