DDD领域设计在“图生代码”中的应用实践

前言

领域驱动设计(简称 ddd)概念来源于2004年著名建模专家Eric Evans 发表的他最具影响力的书籍:《领域驱动设计——软件核心复杂性应对之道》(Domain-Driven Design –Tackling Complexity in the Heart of Software),简称Evans DDD。领域驱动设计思想进入软件开发者的视野。在将近20年的发展中领域模型设计一直占据着非常重要的位置。但由于其本身理论性较强,在应用过程中多数用来描述和解决复杂性问题。但本文的目的不在于介绍领域驱动设计,而是站在“图形代码一体化”的角度利用DDD模型实现代码的展示以及逻辑划分以及相应的规范设计。

添加图片注释,不超过 140 字(可选)

一,DDD理论在图生代码中的融合

(1)软件积木理论的两个特定条件

图生代码,其中的“图”其实更多的理解能够为更多非专业程序员能够认识并发现的“积木”模块,而设计软件就像拼积木一样,只要遵循图示给出的拼搭过程,不经思考就能拼出期待的模型。但实践证明要完美的想实现这一过程,还需要两个必备的条件。1,特别定制的积木 2,在特定的场景下。

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

(2)特别定制:由“图”反推定制代码

为特定的业务做专业的分解,再注入一些基础的模型理论以及可视化的特性,这些是常用软件“积木”通用方法论,这些特别定制最终再落到具有特定技术背景指定技术框架的技术实现“产品代码”。但“图生代码”是这一过程是逆向操作,从方法论上而言是先确定边界及需求再谋求技术路线。但从产品的角度而言则是移除产品功能边界从更高的层面上谋求战术与战略的商业述求。

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

(3)特定场景:DDD规范中的战略与战术设计

在DDD中最不缺的就是概念,三个“D”中每一个都是一个厚重的理论基础。在软件产品中,每一个角色都能在其中找到所需要的述求。

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

二,DDD领域设计实践——领域职责划分与配置

DDD在设计上是拥有非常严谨的逻辑划分以及分工职责的,是一门适合复杂应用的纲领性设计指导。其复杂度和实施难度是非常大的,但如何做出来一个实践一个优秀DDD应用,并不是本文的重点,本文更多的是探讨如何将DDD的一些应用分析方法应用到“图生代码”这个特定的课题下。让“生成代码”拥有更好的领域特性绑定领域模型融合。

(1)图生代码特定的领域范畴

图生代码核心是以图为中心的,将“图”的数据属性、展现属性、逻辑关联、动作事件属性,使用DDD的聚合根、聚合服务、领域事件等模型来进行分类概括。如下图对应关系所示:

添加图片注释,不超过 140 字(可选)

(2)聚合配置

聚合配置,是将“图”中所描述的时间轴为中心的流水场景,采用领域模型的方式进行了建模划分通过聚合配置来平面化设置及分类。

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

(3)聚合根

添加图片注释,不超过 140 字(可选)

(4)聚合实体

添加图片注释,不超过 140 字(可选)

(5)动作菜单

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

三,“图生代码”代码与DDD互换

(1)DDD领域配置与图形代码

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

(2)DDD领域配置与逻辑代码

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

(3)图生代码

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/640699.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

linux命令中arpd的使用

arpd 收集免费ARP信息 补充说明 arpd命令 是用来收集免费arp信息的一个守护进程,它将收集到的信息保存在磁盘上或者在需要时,提供给内核用户用于避免多余广播。 语法 arpd(选项)(参数)选项 -l:将arp数据库输出到标准输出设备显示并退出…

BL121DT网关在智能电网分布式能源管理中的应用钡铼技术协议网关

随着全球能源结构的转型和智能电网技术的飞速发展,分布式能源管理系统在提高能源利用效率、促进可再生能源接入及保障电网稳定运行方面发挥着日益重要的作用。然而,分布式能源系统内设备种类繁多,通信协议各异,如何高效整合这些设…

SpringCloud+Python 混合微服务,如何打造AI分布式业务应用的技术底层?

尼恩:LLM大模型学习圣经PDF的起源 在40岁老架构师 尼恩的读者交流群(50)中,经常性的指导小伙伴们改造简历。 经过尼恩的改造之后,很多小伙伴拿到了一线互联网企业如得物、阿里、滴滴、极兔、有赞、希音、百度、网易、美团的面试机会&#x…

拼多多携手中国农业大学,投建陕西佛坪山茱萸科技小院

5月16日下午,中国农业大学陕西佛坪山茱萸科技小院在佛坪县银厂沟村揭牌。佛坪县素有“中国山茱萸之乡”的美誉,是全国山茱萸三大基地之一,当地山茱萸是国家地理标志产品,山茱萸肉产量位居全国第二。 为充分发挥佛坪县得天独厚的山…

[猫头虎分享21天微信小程序基础入门教程] 第11天:小程序的动态数据展示与实时更新

[猫头虎分享21天微信小程序基础入门教程] 第11天:小程序的动态数据展示与实时更新 — 第11天:小程序的动态数据展示与实时更新 📊 自我介绍 大家好,我是猫头虎,一名全栈软件工程师。今天我们继续微信小程序的学习&a…

49页 | 2024年人工智能内生安全白皮书(免费下载)

以上是资料简介和目录,如需下载,请前往星球获取:

jmeter之线程组教程

一、线程组的作用 线程组是测试计划的子控件,也是取样器的父控件setup线程组,在所有线程组之前运行,类似于unittest框架中的SetUp函数,初始化环境teardown线程组,在所有线程组之后运行,类似于unittest中的…

【学习笔记】Windows GDI绘图目录

题外话 不知几时开始,觉得学习过程中将内容记录下来,有助于加强记忆,还方便后续查找,顺便帮助有需要的人,更有来自您阅读、点赞、收藏和评论时给我带来的动力与兴奋。 目录 【学习笔记】Windows GDI绘图(一)图形概述…

机器学习之支持向量机SVM

支持向量机 概念 是supported vector machine(支持向量机),即寻找一个超平面使样本分成两类,且间隔最大分类 分类 硬间隔 若样本线性可分,且所有样本分类正确情况下,寻找最大间隔,即硬间隔 若…

SpringBoot Redis 扩展高级功能

环境:SpringBoot2.7.16 Redis6.2.1 1. Redis消息发布订阅 Spring Data 为 Redis 提供了专用的消息传递集成,其功能和命名与 Spring Framework 中的 JMS 集成类似。Redis 消息传递大致可分为两个功能区域: 信息发布 信息订阅 这是一个通常…

有哪些地图采集软件可以采集商家数据导出功能?

1.国内商家采集 寅甲地图数据采集软件 寅甲地图数据采集软件一款多关键词多城市同时采集百度地图、360地图、高德地图、搜狗地图、腾讯地图、图吧地图、天地图商家、公司、店铺的手机、座机、地址、坐标等数据信息的软件。 2.国外商家采集 寅甲谷歌地图数据采集软件 专为做…

Java学习路线思维导图

目录 Java学习流程1.学习大纲2.Java开发中常用的DOS命令 Java入门学习思维导图 Java学习流程 通过大纲了解学习的重点,通过目录依次深入【注:Java环境的搭建百度,提升自己百度的能力】 1.学习大纲 学习流程如下: Java基础语法 …

操作系统3_作业与处理机调度

操作系统3_作业与处理机调度 文章目录 操作系统3_作业与处理机调度1. 作业的概念与组成2. 作业的建立及状态3. 处理机调度相关概念3.1 调度级别3.2 调度队列模型3.3 选择准则4. 作业调度与进程调度5. 典型处理机调度算法5.1 先来先服务算法FCFS5.2 短作业优先算法SJF5.3 优先级…

Python中别再用 ‘+‘ 拼接字符串了!

大家好,在 Python 编程中,我们常常需要对字符串进行拼接。你可能会自然地想到用 操作符将字符串连接起来,毕竟这看起来简单明了。 在 Python 中,字符串是不可变的数据类型,这意味着一旦字符串被创建,它就…

HarmonyOS 鸿蒙应用开发 DevEco Studio环境搭建 (值得收藏哦)

目录 1、华为开发者官网下载 DevEco Studio 2、安装DevEco Studi 3、安装过程具体步骤 4、认证华为开发者账号 5、编写第一个鸿蒙应用 1、华为开发者官网下载 DevEco Studio 前往:华为开发者官网地址 下载,我这里下载的 deveco-studio-3.1.0.500版…

VSCode SAP Systems配置HTTPS访问SAP

第一次访问提示,Self-Signed 证书 解决办法:https访问SAP Fiori网站,导出SSL证书为DER格式保存到硬盘上 双击DER文件,导入到系统 退出VSCode,再次启动 Test Connection, 提示 The system URL is using a hostname …

“高考钉子户”唐尚珺决定再战2024年高考

“高考钉子户”唐尚珺决定在2024年再次参加高考,这个选择确实很特别也很有趣。十几年连续参加高考,他已经积累了大量的备考经验和应试技巧。这样的经验对于高考辅导机构来说无疑是非常宝贵的资源,他如果选择去辅导机构当老师,应该…

二百三十七、Hive——DWS层生成每个清洗字段的异常情况记录

一、目的 在Hive中对每种业务数据的清洗字段的异常数据进行记录 例如这张图,上面是原始数据,下面是每台雷达每天的异常字段的记录 二、实施步骤 (一)建表 create table if not exists dws_data_clean_record_queue(data_ty…

基于Matlab卷积神经网络人脸识别

欢迎大家点赞、收藏、关注、评论啦 ,由于篇幅有限,只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 一、项目背景与意义 人脸识别作为计算机视觉领域的关键技术之一,具有广泛的应用前景,如安全…

如何参与github开源项目并提交PR

👽System.out.println(“👋🏼嗨,大家好,我是代码不会敲的小符,目前工作于上海某电商服务公司…”); 📚System.out.println(“🎈如果文章中有错误的地方,恳请大家指正&…