DDD理论学习系列(4)-- 领域模型】的更多相关文章

DDD理论学习系列目录 1.引言 我们还是先来拆词理解,领域模型可以拆为"领域"和"模型"二词. 领域:按照我们之前的文章的理解,DDD中的领域是指软件系统要解决的问题,如我们的办公设备公众号在线商城就是为了解决电商问题,对应的就是电商领域. 模型:百度百科解释为对于某个实际问题或客观事物.规律进行抽象后的一种形式化表达方式.如户型图就是实际房屋结构的模型. 把两个词结合起来,我们给领域模型下个定义:领域模型是对我们软件系统中要解决问题的抽象表达. 这个理解还是很生…
DDD理论学习系列--案例及目录 1.引言 上一节讲解了领域模型,领域模型主要是将业务中涉及到的概念以面向对象的思想进行抽象,抽象出实体对象,确定实体所对应的方法和属性,以及实体之间的关系.然后将这些实体和实体之间的关系以某种形式(比如UML.图形.代码.文字描述等)展现出来.而领域模型是领域建模的结果,那如何建模呢?我们可以借助于UML. 我们知道UML(统一建模语言)是一种用于绘制软件概念图的图形符号.在和他人交流以及帮助解决设计问题方法,图示是最有效的.在DDD中我们习惯用UML进行领域建…
DDD理论学习系列--案例及目录 1.引言 提到值对象,我们可能立马就想到值类型和引用类型.而在C#中,值类型的代表是strut和enum,引用类型的代表是class.interface.delegate等.值类型和引用类型的区别,大家肯定都知道,值类型分配在栈上,引用类型分配在堆上. 那是不是值类型对应的就是值对象,引用类型对应的就是实体吗?很抱歉,不是的. 值对象我们要分开来看,其包含两个词:值和对象.值是什么?比如,数字(1.2.3.14),字符串("hello world".&…
DDD理论学习系列--案例及目录 1. 引言 单从字面理解,不管是领域服务还是应用服务,都是服务.而什么是服务?从SOA到微服务,它们所描述的服务都是一个宽泛的概念,我们可以理解为服务是行为的抽象.从前缀来看,根据DDD的经典分层架构,它们又隶属于不同的层,应用服务属于应用层,领域服务属于领域层. 应用层(Application):负责展现层与领域层之间的协调,协调业务对象来执行特定的应用程序任务.它不包含业务逻辑. 领域层(Domain):负责表达业务概念,业务状态信息以及业务规则,是业务软件…
DDD理论学习系列--案例及目录 1. 引言 A domain event is a full-fledged part of the domain model, a representation of something that happened in the domain. Ignore irrelevant domain activity while making explicit the events that the domain experts want to track or b…
DDD理论学习系列--案例及目录 1.引言 聚合,最初是UML类图中的概念,表示一种强的关联关系,是一种整体与部分的关系,且部分能够离开整体而独立存在,如车和轮胎. 在DDD中,聚合也可以用来表示整体与部分的关系,但不再强调部分与整体的独立性.聚合是将相关联的领域对象进行显示分组,来表达整体的概念(也可以是单一的领域对象).比如将表示订单与订单项的领域对象进行组合,来表达领域中订单这个整体概念. 我们知道,领域模型是由一系列反映问题域概念的领域对象(实体和值对像)组成,聚合正是应用在领域对象之上…
DDD理论学习系列--案例及目录 1.引言 在针对大型的复杂领域进行建模时,聚合.实体和值对象之间的依赖关系可能会变得十分复杂.在某个对象中为了确保其依赖对象的有效实例被创建,需要深入了解对象实例化逻辑,我们可能需要加载其他相关对象,且可能为了保持其他对象的领域不变性增加了额外的业务逻辑,这样即打破了领域的单一责任原则(SRP),又增加了领域的复杂性. 那如何去创建复杂的领域对象呢?因为复杂的领域对象的生命周期可能需要协调才能进行创建. 这个时候,我们就可以引入创建类模式--工厂模式来帮忙,将对…
DDD理论学习系列--案例及目录 1. 引言 DDD中Repository这个单词,主要有两种翻译:资源库和仓储,本文取仓储之译. 说到仓储,我们肯定就想到了仓库,仓库一般用来存放货物,而仓库一般由仓库管理员来管理.当工厂生产了一批货物时,只需交给仓库管理员即可,他负责货物的堆放:当需要发货的时候,仓库管理员负责从仓库中捡货进行货物出库处理.当需要库存盘点时,仓库管理员负责核实货物状态和库存.换句话说,仓库管理员负责了货物的出入库管理.通过仓库管理员这个角色,保证了仓库和工厂的独立性,工厂只需要…
DDD理论学习系列--案例及目录 1. 引言 Module,即模块,是指提供特定功能的相对独立的单元.提到模块,你肯定就会想到模块化设计思想,也就是功能的分解和组合.对于简单问题,可以直接构建单一模块的程序.而对于复杂问题,则可以先创建若干个较小的模块,然后将它们组装.链接在一起,从而构成复杂的软件系统. 在DDD中,模块的用途也是如此,通过分解领域模型为不同的模块,以降低领域模型的复杂性,提高领域模型的可读性. 2. DDD中的模块 模块是一个笼统的概念,比较宽泛,为了正确发挥模块的威力,理解…
目录 DDD理论学习系列(1)-- 通用语言 DDD理论学习系列(2)-- 领域 DDD理论学习系列(3)-- 限界上下文 DDD理论学习系列(4)-- 领域模型 DDD理论学习系列(5)-- 统一建模语言 DDD理论学习系列(6)-- 实体 DDD理论学习系列(7)-- 值对象 DDD理论学习系列(8)-- 应用服务&领域服务 DDD理论学习系列(9)-- 领域事件 DDD理论学习系列(10)-- 聚合 DDD理论学习系列(11)-- 工厂 上下文映射图 战略设计与战术设计 实体 值对象 领域…