美文网首页
百问中台:基于DDD的中台值对象

百问中台:基于DDD的中台值对象

作者: sknfie | 来源:发表于2020-10-14 09:39 被阅读0次

    概述

    值对象由两个word组成:值+对象。值对象=值+对象,即一个值用对象的方式进行表述,来表达一个具体的固定不变的概念:

    • 值是什么或者有什么特点?
      固定不变,表述一个具体的概念。如数字1、2、3,字符串“hello world”,地址(北京市海淀区中关村)。
    • 对象是什么或者有什么特点?
      一切皆为对象,是对现实世界的抽象,用来描述一个具体的事物。

    值的特征

    • 表示一个具体的概念
    • 通过值的属性对其识别
    • 属性判等
    • 固定不变

    值对象的特征

    • 描述了领域中的一件东西
    • 不可变的
    • 将不同的相关属性组合成了一个概念整体
    • 当度量和描述改变时,可以用另外一个值对象予以替换
    • 和其他值对象进行相等性比较(属性判等)
    • 对协作对象没有副作用
      综上所述,值对象包含了值所具有的全部特征。

    值对象的持久化

    • 单个值对象
      将值对象中的属性作为所属实体的数据列来存储(比如,我们可以将地址的属性映射到用户实体中)。
    • 多个值对像序列化到单个列
      当每个用户只有一个地址时,用上面的方案即可。但如果有多个地址时,可以把一个集合序列化后塞到外层实体表的某一列中,极大的简化了系统的设计。
    • 使用数据库实体保存多个值对像
      使用数据库实体的形式保存值对象,这个比较符合传统的设计方式,但不是DDD推崇的方式,因为这种方式让值对象有了实体的影子。
      因此,在进行持久化设计时,需谨记:
      根据业务来驱动技术,即根据领域模型来设计数据模型,而不是根据数据模型来设计领域模型。

    值对象的作用

    • 有利于使用通用语言,简单明了表达业务领域,使设计更加简洁,充分提升系统的性能。
    • 有利于使用建模值对象,领域中的某些对象,只需知道它是什么而无需关心它是哪个。所以建模值对象要结合通用语言的表述看其是否有值的含义和特征。

    总结

    In a word, 值对象就是将一个值用对象的方式进行表述,来表达一个具体的固定不变的概念。

    相关文章

      网友评论

          本文标题:百问中台:基于DDD的中台值对象

          本文链接:https://www.haomeiwen.com/subject/dssipktx.html