【DDD】DDD和rxjs

226 阅读2分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

DDD:Domain-Driven Design

中文名叫领域驱动设计
作为一种充血模型,也是我现在一直在实践的模式
优点是更贴近业务,
举个例子:

买保险,保单有承保、保单验证和保单兑现等多个流程,  
每个关键业务都可以作为一个限界上下文,是一个相对封闭的业务主体;  
这时候如果我们既想保持各阶段业务的独立性,  
又想让它们之间信息同步,我们要怎样做?

没错,答案就是rxjs

rxjs : Reactive Extensions for JavaScript

是一种基于可观测数据流Stream 结合观察者模式和迭代器模式的一种异步编程的应用库
中间的衔接关键在于观察者模式
所谓观察者模式,很多人喜欢叫它发布订阅模式,
当然它们也有所区别,这里就不细讲。
但要举个简单的例子说明下发布订阅

产品经理韩梅梅,为了给前端张三和后台李四发送需求文档拉了个群,
在群里的张三和李四就是韩梅梅的订阅者,而产品经理韩梅梅就是发布者

从这里可以看出,rxjs有很强的通信能力,
实际上目前市面上的很多状态管理库都是基于此实现的, 包括笔者的frer,有兴趣的可以看一下

DDD和rxjs的结合

一个想要信息同步,一个擅长传递状态,两个人一拍即合

我们可以在两个限界上下文之间传递一个BehaviorSubject  
当然Subject也可以
在承保阶段通过next传值, 也就有发文档   
然后在保单验证阶段通过subscribe订阅文档

这样就能很好的完成两个限界上下文的信息同步