领域驱动设计概念

1.聚合根设计仓储
1)是不是只有聚合根才设计仓储,其他的实体不需要?

限界上下文
1)一个给定的业务领域会包含多个限界上下文,想与一个限界上下文沟通,则需要通过显示边界进行通信。
系统通过确定的限界上下文来进行解耦,而每一个上下文内部紧密组织,职责明确,具有较高的内聚性。
2)一个很形象的隐喻:细胞质所以能够存在,是因为细胞膜限定了什么在细胞内,什么在细胞外,并且确定了什么物质可以通过细胞膜。


仓储,资源库
领域对象需要资源存储,存储的手段可以是多样化的,常见的无非是数据库,分布式缓存,本地缓存等。资源库(Repository)的作用,
就是对领域的存储和访问进行统一管理的对象。

ACL防腐层
亦称适配层。在一个上下文中,有时需要对外部上下文进行访问,通常会引入防腐层的概念来对外部上下文的访问进行一次转义

领域服务
上文中,我们将领域行为封装到领域对象中,将资源管理行为封装到资源库中,将外部上下文的交互行为封装到防腐层中。
此时,我们再回过头来看领域服务时,能够发现领域服务本身所承载的职责也就更加清晰了,
即就是通过串联领域对象、资源库和防腐层等一系列领域内的对象的行为,对其他上下文提供交互的接口

XXO
首先领域的开放服务通过信息传输对象(DTO)来完成与外界的数据交互;
在领域内部,我们通过领域对象(DO)作为领域内部的数据和行为载体;
在资源库内部,我们沿袭了原有的数据库持久化对象(PO)进行数据库资源的交互。
同时,DTO与DO的转换发生在领域服务内,DO与PO的转换发生在资源库内。

有一种解决方案,按照演进式设计的理论,让系统的设计随着系统实现的增长而增长。我们不需要作提前设计,就让系统伴随业务成长而演进。这当然是可行的,敏捷实践中的重构、测试驱动设计及持续集成可以对付各种混乱问题。重构——保持行为不变的代码改善清除了不协调的局部设计,测试驱动设计确保对系统的更改不会导致系统丢失或破坏现有功能,持续集成则为团队提供了同一代码库。

限界上下文之间的映射关系

合作关系(Partnership):两个上下文紧密合作的关系,一荣俱荣,一损俱损。

共享内核(Shared Kernel):两个上下文依赖部分共享的模型。

客户方-供应方开发(Customer-Supplier Development):上下文之间有组织的上下游依赖。

遵奉者(Conformist):下游上下文只能盲目依赖上游上下文。

防腐层(Anticorruption Layer):一个上下文通过一些适配和转换与另一个上下文交互。

开放主机服务(Open Host Service):定义一种协议来让其他上下文来对本上下文进行访问。

发布语言(Published Language):通常与OHS一起使用,用于定义开放主机的协议。

大泥球(Big Ball of Mud):混杂在一起的上下文关系,边界不清晰。

另谋他路(SeparateWay):两个完全没有任何联系的上下文。

领域驱动设计(DDD)在美团点评业务系统的实践

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值