DDD与传统的OOA/D有什么区别?

news2024/11/28 19:04:38

139ded6e449951a7b494903d94f63437.png

DDD(Domain-Driven Design)与传统的OOA/D(Object-Oriented Analysis and Design)有以下几个不同点:

  • 领域驱动设计注重建立一个通用语言,使得业务专家和技术人员之间能够沟通协作,在业务问题的解决上更加高效。而传统的OOA/D则更加强调分析模型与设计模型的构建。

  • DDD更加注重对领域模型的抽象,将领域内的各元素进行拆分和组合,从而形成每一个子领域下的完整模型,帮助开发人员在实现过程中保持一致性。而OOA/D则更加偏重于将对象和类抽象出来,并且通过组合与继承完成系统构建。

  • DDD更加注重领域模型的演化,将其视作一个不能静止的东西,随着业务需求的变化而不断优化和完善。而OOA/D则更加关注系统的可扩展性以及代码的重用性。

  • DDD更加注重业务特性的发现,将领域模型中的各种约束和规则表达出来,从而为后期的开发工作提供了基础。而OOA/D更加注重面向对象的编程思想,强调封装、继承和多态等概念。

  • 总的来说,DDD关注业务领域本身,以及在这个领域内发现的问题和需求,而OOD则更加关注软件系统本身。DDD通过领域建模和通用语言的建立来解决问题,而OOD更加注重针对系统性能和架构的优化。

通过DDD分析业务的流程和OOA/D的流程有什么区别?

  • 划分领域模型

DDD强调对业务领域进行抽象和建模,将复杂的业务逻辑划分为多个子域(Sub-Domain),然后针对每一个子域去设计相应的领域模型。而传统的OOA/D则更加注重对整个系统的分析与设计。

  • 定义通用语言

在DDD中,定义通用语言(Ubiquitous Language)是非常重要的一步,在此过程中,开发人员必须积极与业务专家沟通,并将其理解的业务术语和规则与代码实现相对应。而传统的OOD则更多地关注于对象、类、数据等方面的建模。

  • 实现领域模型

在DDD中,领域模型是核心,程序员需要将领域模型转换成代码实现,保证代码和领域模型的一致性。而在传统的OOD中,程序员需要根据分析模型进行相应的编程实现。

  • 在领域里驱动代码实现

在DDD中,领域模型是代码实现的主导方向,程序员和业务专家共享领域模型,这样可以有效地避免因为业务专家和程序员语言不通而导致的需求理解不清的问题。而传统的OOA/D中,分析模型和设计模型是主导方向。

总之,DDD注重业务领域本身,强调从实际业务出发进行领域建模和通用语言的建立,将领域模型和代码实现保持一致性;而传统的OOA/D则更加侧重于对系统的架构、数据的组织等技术层面的考虑。

最后

    从个人的实际应用场景,其实从传统的面向对象转到DDD有很大的学习成本,而且对于DDD来说需要对业务的理解有一定的深度和抽象能力。比如spring的mvc三层转到DDD的写法和用法,可能100家公司有101种理解和拆分方法,而且DDD有很多新的概念,当然也不是说DDD不好,要看实际场景,比如用DDD来拆分业务和分析业务,边界是一个很不错的一种工具。当然一切还是需要从实际出发~没有好坏,只有适不适合~

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

TrueNAS配置虚拟机网卡

TrueNAS支持运行虚拟机,但会出现虚拟机可以访问外网,却不能和主机的TrueNAS通讯。 这时,需要重新配置TrueNAS的网卡设置。 1. 原来的主机网卡配置 我的这台TrueNAS主机有两个以太网卡,目前使用的是enp4s0,IP地址192.1…

CPM-Bee本地部署的实战方案

大家好,我是herosunly。985院校硕士毕业,现担任算法研究员一职,热衷于机器学习算法研究与应用。曾获得阿里云天池比赛第一名,CCF比赛第二名,科大讯飞比赛第三名。拥有多项发明专利。对机器学习和深度学习拥有自己独到的见解。曾经辅导过若干个非计算机专业的学生进入到算法…

从零开始学习JavaScript:轻松掌握编程语言的核心技能④

从零开始学习JavaScript:轻松掌握编程语言的核心技能④ 1. JavaScript 表单1.1 JavaScript 表单验证 2. JavaScript 保留关键字3. JavaScript this 关键字4. JavaScript let 和 const4.1 let4.2 const 5.JavaScript JSON6.JavaScript 异步编程7.JavaScript 代码规范…

4.协同工作与发布

目录 1 开发流程 2 人员分配情况 3 不同角色的权限 4 添加项目成员和体验成员 4.1 项目成员 4.1.1 添加 4.1.2 删除与修改权限 4.2 体验成员 4.2.1 添加 4.2.2 删除 5 发布上线 5.1 上传代码 5.2 提交审核 5.3 发布 6 推广 7 查看后台数据 1 …

留学生乱用ChatGPT真的太致命!被认定学术不诚信直接被退学?

01.ChatGPT留学生神器?作业论文全靠它? 近期留学圈内最火热的话题,肯定是关于ChatGPT。 “这个python作业我写不来,让ChatGPT帮我直接生成code就好了。” “论文英文的写不来,ChatGPT直接生成一篇essay,…

Linux - 进阶 使用 LAMP 搭建私有云存储 ( Nextcloud 搭建)

我们用到的私有云存储 >>> nextcloud (非常出名的一款 私有云搭建的应用响应程序 ) 预备工作 : # 关闭 selinux 及 防火墙 [rootserver ~]# setenforce 0 [rootserver ~]# systemctl stop firewalld # 搭建 LAMP 环境 L &…

上市公司污染排放数据(2007-2022)

随着绿色金融的发展、环境信息披露政策制度的相继出台以及公众环保意识的增强,上市公司环境信息披露引起了学者、机构以及社会公众的广泛关注。本数据收集整理上市公司污染排放数据。 1、数据来源:自主整理 2、时间跨度:2007-2022年 3、区域…

构筑算力时代的全光底座,华为带来了面向F5.5G演进的战略蓝图

1991年,科学家Mark Weiser发表了一片文章《The Computer for the 21st Century》,其中有一句名言: The most profound technologies are those that disappear.They weave themselves into the fabric of everyday life until they areindist…

Executor框架的结构

Executor框架的结构 Executor框架主要由3大部分组成如下。任务。包括被执行任务需要实现的接口:Runnable接口或Callable接口。任务的执行。包括任务执行机制的核心接口Executor,以及继承自Executor的ExecutorService接口。Executor框架有两个关键类实现…

Office Visio 2013安装

哈喽,大家好。今天一起学习的是Visio 2013的安装,这是一个绘制流程图的软件,用有效的绘图表达信息,比任何文字都更加形象和直观。Office Visio 是office软件系列中负责绘制流程图和示意图的软件,便于IT和商务人员就复杂…

【软考系统规划与管理师笔记】第5篇 IT服务规划设计

目录 1概述 2 IT服务规划设计活动 2.1 规划设计的活动 2.2关键成功因素 3服务目录管理 3.1 设计服务目录的目的 3.2服务目录设计活动 3.3服务目录设计关键成功因素 4服务级别协议 5服务需求识别 5.1服务需求识别的目的 5.2服务需求识别的活动 5.3 评估服务的指标…

[MySQL从入门到精通]SQL语句

前言 本期主要的学习目标是SQl语句中的DDL和DML实现对数据库的操作和增删改功能,学习完本章节之后需要对SQL语句手到擒来。 1.SQL语句基本介绍 SQL(Structured Query Language)是一种用于管理关系型数据库的编程语言。它允许用户在数据库中存…

弄清楚Node.js的功能特性、运行时、组成和发展趋势分析以及与JavaScript的区别

目录 Node.js介绍 Node.js的作用和功能特性 Node.js应用场景 运行时是什么 Node.js的组成 1. V8引擎 2. 本地(核心)模块 3. 标准库 Node.js的发展趋势 总结 Node.js是一个基于Chrome V8引擎的JavaScript运行时环境,使JavaScript可以…

CAD配置绘图环境

绘图时拥有自己的设置是非常重要的 我们可以用不同的颜色区分线条、用特殊的注释格式使自己理解更方便 这些功能需要我们在绘图之前完成对设计环境的配置,主要体现在图层的设置上 首先新建一个窗口 在命令行输入LA 或者在菜单栏点击图层特性 就能打开图层特性管…

【一起啃书】《机器学习》第八章 集成学习

文章目录 第八章 集成学习8.1 个体与集成8.2 Boosting8.3 Bagging与随机森林8.4 结合策略8.5 多样性 第八章 集成学习 8.1 个体与集成 集成学习通过构建并结合多个学习器来完成学习任务,有时也被称为多分类器系统、基于委员会的学习等,下面是集成学习的…

网格搜索:Python遍历网格中每个点

遍历网格中每个点 1. 问题描述2. Python实现2.1 网格参数初始化2.2 遍历赋值2.3 矩阵赋值1. 问题描述 最近需要实现一个对矩阵赋值并对矩阵表示的网格参数进行测试的任务,假设网格的长宽均为k,待搜索的两个参数是Pitch 和 Yaw,存在两个列表中。现在需要将网格上不同参数设置…

什么情形下应该使用BFF?带你了解BFF的优势,即服务于前端的后端

BFF简介 BFF是一种Web架构,全名为Backends For Frontends,即为服务于前端的后端。这个词来源于Sam Newman的一篇文章:Pattern: Backends For Frontends。BFF一般指的是在前端与后端之间加增加一个中间层。为什么要在前端和后端之间增加一个B…

Python潮流周刊#5:并发一百万个任务要用多少内存?

△点击上方“Python猫”关注 ,回复“1”领取电子书 你好,我是猫哥。这里记录每周值得分享的 Python 及通用技术内容,部分为英文,已在小标题注明。(标题取自其中一则分享,不代表全部内容都是该主题&#xff…

oc 安装 demo 版本

版本 demo 版本用于学习;推荐订阅版本,个人商用,3.0 以下有破解,4.0 据说没有破解版本企业版,企业商用版本。 demo 版本用于学习 demo 安装需要 下载地址 oc安装 官方文档 https://docs.otoy.com/cinema4d/Instal…