这篇文章主要还是表述清楚DDD相关的基础概念,因为DDD入门有一定的专业名词,还是得有个基本的了解。

先讲解下领域模型作用:

对软件需求进行设计,维持其内在逻辑的一致性

1)划分边界、也是一种高内聚、低耦合

2)所有逻辑都是内聚在对象内部的【包含行为和数据】

为什么需要DDD?

行业现状:

贫血模型、充血模型

  • 领域模型就是DDD?

    • 其实领域模型早于DDD,很早就存在了,DDD算是一种实现方式而已
  • 战略设计、战术设计
    1. 领域、子域、界限上线文、上下文映射图这些是DDD的战略设计(帮助服务的关系设计、边界设计)
    2. 实体、值对象、聚合、CQRS、事件溯源、这些是DDD的战术设计(实现手段)。
      • 实体:具有唯一标识,实体可能会变化,比如订单状态,但它的唯一标识不会变化。有生命周期的概念(待支付、已支付、关闭等)
      • 值对象:特点是不变形。创建之后不会被改变。如果改变了,就是一个新的地址(打个比方),最多算是描述,仅仅只用来度量或描述的对象应该被设计为值对象
      • 聚合:关联对象的实体,将其作为一个单元来处理数据变更。
      • 聚合根:将多个实体和值对象聚合在一起的实体
        • 仓储:领域对象都怎么构建出来的,它们存在哪里?这就不得不提到仓储(Repository)这个概念。在DDD理念里,仓储负责领域对象的存储,但仓储本身并没规定存储介质。也就是说仓储只负责定义领域对象的读/写协议,至于具体用内存、MySQL还是Oracle,它不关心。在《领域驱动设计:软件核心复杂性应对之道》中提到,一般只对聚合根建立仓储

示例:

    • 通过战略设计,划分模块和服务的边界与依赖关系,对微服务架构的设计至关重要。

  • 六边形架构:不同的外部系统通过不同的适配器与领域模型交互,可以是HTTP/WEBSERVICE/RPC只需要为这些不同的访问接口提供不同的适配器就可以了

待补充。。。

DDD从入门到精通:基础篇的更多相关文章

  1. Java入门到精通——基础篇之多线程实现简单的PV操作的进程同步

    Java入门到精通——基础篇之多线程实现简单的PV操作的进程同步 一.概述     PV操作是对信号量进行的操作.     进程同步是指在并发进程之间存在一种制约关系,一个进程的执行依赖另一个进程的消 ...

  2. Java入门到精通——基础篇之面向对象

    一.概述. Java属于面向对象的一种语言,因为Java是面向对象的语言所以这个语言的诞生需要有五个基本特性: 1)万物皆为对象. 2)程序是对象的集合. 3)每个对象都有自己的由其他对象所构成的存储 ...

  3. Java从入门到精通——基础篇之JSTL标签

    一.语言基础 EL(Expression Language)表达式,目的:为了使JSP写起来更加简单.提供了在 JSP 中简化表达式的方法. 二.分类 核心标签库:提供条件判断.属性访问.URL处理及 ...

  4. Java入门到精通——基础篇之static关键字

    一.概述        static 关键字是声明静态变量,静态方法用的.static的含义是属于类且不属于类对象的变量和函数. 二.static的产生.         在创建对象的时候除非用new ...

  5. Java从入门到精通——基础篇之Servlet与JSP的区别

    一.基本概念 1.1 Servlet Servlet是一种服务器端的Java应用程序,具有独立于平台和协议的特性,可以生成动态的Web页面.它担当客户请求(Web浏览器或其他HTTP客户程序)与服务器 ...

  6. SaltStack 入门到精通第二篇:Salt-master配置文件详解

    SaltStack 入门到精通第二篇:Salt-master配置文件详解     转自(coocla):http://blog.coocla.org/301.html 原本想要重新翻译salt-mas ...

  7. SaltStack入门到精通第一篇:安装SaltStack

    SaltStack入门到精通第一篇:安装SaltStack 作者:纳米龙  发布日期:2014-06-09 17:50:36   实际环境的设定: 系统环境: centos6 或centos5 实验机 ...

  8. Promise入门到精通(初级篇)-附代码详细讲解

    Promise入门到精通(初级篇)-附代码详细讲解 ​     Promise,中文翻译为承诺,约定,契约,从字面意思来看,这应该是类似某种协议,规定了什么事件发生的条件和触发方法. ​     Pr ...

  9. Jmeter(三十四) - 从入门到精通进阶篇 - 参数化(详解教程)

    1.简介 前边三十多篇文章主要介绍的是Jmeter的一些操作和基础知识,算是一些初级入门的知识点,从这一篇开始我们就来学习Jmeter比较高级的操作和深入的知识点了.今天这一篇主要是讲参数化,其实前边 ...

随机推荐

  1. 微信支付——沙箱调试环境getsignkey方法秘钥获取及常见问题说明

    官方文档 :https://pay.weixin.qq.com/wiki/doc/api/native.php?chapter=23_1 微信支付PC二维码支付:https://www.cnblogs ...

  2. soundcloud to mp3

    关于 本文将介绍一个在线网站,将songs 下载为mp3格式 注意, 大陆需要梯子. 没有?soundcloud无法打开 准备 soundcloud to mp3 一个来自soundcloud的歌曲链 ...

  3. [LeetCode] 729. My Calendar I 731. My Calendar II 732. My Calendar III 题解

    题目描述 MyCalendar主要实现一个功能就是插入指定起始结束时间的事件,对于重合的次数有要求. MyCalendar I要求任意两个事件不能有重叠的部分,如果插入这个事件会导致重合,则插入失败, ...

  4. 【LeetCode】306. Additive Number 解题报告(Python)

    [LeetCode]306. Additive Number 解题报告(Python) 标签(空格分隔): LeetCode 作者: 负雪明烛 id: fuxuemingzhu 个人博客: http: ...

  5. computer(hdu2196)

    Computer Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Su ...

  6. AWS 15 年(1):从 Serverful 到 Serverless

    2006年,AWS发布了其第一个Serverless存储服务S3和第一个Serverful计算服务EC2,这也是AWS正式发布的前两个服务,开启了云计算波澜壮阔的旅程.2014年,AWS发布了业界第一 ...

  7. Local Relation Networks for Image Recognition

    目录 概 主要内容 Hu H., Zhang Z., Xie Z., Lin S. Local relation networks for image recognition. In Internat ...

  8. SHARPENING (HIGHPASS) SPATIAL FILTERS

    目录 Laplacian UNSHARP MASKING AND HIGHBOOST FILTERING First-Order Derivatives Roberts cross-gradient ...

  9. MADE: Masked Autoencoder for Distribution Estimation

    目录 概 主要内容 代码 Germain M., Gregor K., Murray I. and Larochelle H. MADE: Masked Autoencoder for Distrib ...

  10. Chapter 5 Interaction

    目录 5.1 Interaction requires a joint intervention 5.2 Identifying interaction 5.3 Counterfactual resp ...