十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
创新互联建站是一家专业提供禹城企业网站建设,专注与成都网站设计、成都网站制作、外贸网站建设、H5开发、小程序制作等业务。10年已为禹城众多企业、政府机构等服务。创新互联专业的建站公司优惠进行中。
光 明新零售模式,光明新零售模式开发(fzb威246性724),光明新零售模式开发案例,(内容忽视,详情+v)
如果一个聚合只有一个实体,那么这个实体就是聚合根;如果有多个实体,那么我们可以思考聚合内哪个对象有独立存在的意义并且可以和外部直接进行交互。
仓储被设计出来的原因:领域模型中的对象自从创建后不会一直留在内存活动,当它不活动时会被持久化到DB中,当需要的时候会重建该对象。所以,重建对象是一个和DB打交道的过程,需要提供一种机制,提供类似集合的接口来帮助我们 管理对象。
仓储里存放的对象一定是聚合,因为之前提到的领域模型是以聚合的概念来划分边界的。我们 只对聚合设计仓储 ,把整个聚合看成一个整体,要么一起取出来,要么一起被删除,不会单独对某个聚合内的子对象进行单独查询和更新。仓储还有一个重要的特征就是分为仓储定义部分和仓储实现部分,在领域模型中定义仓储的接口,而在基础设施层实现具体的仓储。
根据需求建立初步的领域模型,识别明显的领域概念和之间的关联(1:1, 1:n的关系),用文字精确没有歧义的描述出每个领域概念的含义;
分析主要的软件功能,识别主要的应用层的类,这样有助于及早发现哪些是应用层的职责,哪些是领域层的职责;
进一步分析领域模型,识别出实体、值对象、领域服务;
分析关联,通过对业务的深入分析和软件设计原则及性能方面的权衡,明确关联的方向,去掉一些不需要的关联;
找出聚合边界及聚合根,在分析过程中会出现难以清洗判断的选择问题,这就依赖平时分析经验的积累了;
为聚合根配置仓储,一般情况下为一个聚合分配一个仓储,此时设计好仓储的接口即可;
遍历所有场景,确定设计的领域模型能有效解决业务需求;
考虑如何创建实体和值对象,是通过工厂还是构造函数;
重构模型,寻找模型中有疑问或蹩脚的地方,比如思考:聚合的设计是否正确,模型的性能等等;
领域建模是一个不断重构,持续完善的过程,大家会在讨论中将变化的部分反映到模型中,从而模型不断细化并朝正确的方向走。
现实世界中的领域包括 问题空间(Problem Space)和 解决方案空间(Solution Space):
问题空间:是核心域和其他子域的组合,思考的是 业务面临的挑战
解决方案空间:一组特定的 软件模型,包括一个或多个限界上下文,思考的是如何实现软件(限界上下文 即是一个 特定的解决方案,通过软件的方式实现解决方案)以 解决这些业务挑战
一个 显式的边界(主要是一个语义上的边界),领域模型便存在于这个边界之内;每一个模型概念(包括它的属性和操作)在边界之内都具有特殊的含义;
一个 给定的业务领域 会包含多个限界上下文,想与一个限界上下文沟通,则需要通过显示边界进行通信;系统通过确定的限界上下文来进行解耦,而每一个上下文内部紧密组织,职责明确,具有较高的内聚性;
一个很形象的隐喻:细胞质所以能够存在,是因为细胞膜限定了什么在细胞内,什么在细胞外,并且确定了什么物质可以通过细胞膜(引用);
对 领域中 所发生的事件(领域专家所关心的发生在领域中的一些事件)进行建模,即 领域事件(领域模型 的组成部分)
领域事件的特点
领域事件 用来捕获领域中发生的一些事情,开始使用领域事件时,要 对不同的事件进行定义;
“当...时,请通知我” 等等场景
限界上下文内,观察者模式 是一种简单高效的发布领域事件的方法;
限界上下文外,利用 消息机制 将本地限界上下文产生的事件发送到 远程限界上下文 中(我们要保证 所有限界上下文 的最终一致性);