当前位置: 首页 > news >正文

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 字(可选)

http://www.lryc.cn/news/352404.html

相关文章:

  • LabVIEW舱段测控系统开发
  • [leetcode]第 n个丑数
  • STM32-电灯,仿真
  • 《SpringBoot》系列文章目录
  • 牛客小白月赛94VP
  • php 亚马逊AWS-S3对象存储上传文件
  • electron-01 基础及NPM相关配置
  • Foxit PDF Editor Pro福昕PDF编辑器Pro:重塑您的文档编辑体验
  • VUE 页面生命周期基本知识点
  • windows查看mysql的版本(三种方法)
  • Redis批量删除指定前缀的key
  • 机器学习实验------Adaboost算法
  • 点云处理中阶 Octree模块
  • Nginx实现负载均衡与故障检查自动切换
  • 2024年学浪视频怎么下载到手机相册
  • 【北京市政府网_注册安全分析报告】
  • 工作中的冲突,职场人士应如何化解
  • 企业级大数据平台建设方案
  • HTML语义化标签:为何它们如此重要?
  • 详细介绍一下Votenet的工作原理及流程
  • 使用Autofit.js和React实现自适应布局
  • Kafka之【存储消息】
  • 鸿蒙开发配置官方地图
  • 《天道》丁元英格律诗商业案例完整拆解(上)
  • 2024年山东省安全员C证证模拟考试题库及山东省安全员C证理论考试试题
  • 微软开源多模态大模型Phi-3-vision,微调实战来了
  • 架构二。。
  • 《Google 软件工程》读书笔记
  • 研发机构大数据迁移如何保障敏感数据不泄露
  • 【Spring Security系列】权限之旅:SpringSecurity小程序登录深度探索