DDD中BoundedContext視為有限上下文更好

banq發表於2022-01-03
“We often fall into the trap of thinking of a boundary as something that separates one thing from another. We should rather think of a boundary as something that constitutes that which is bounded. This shift will help us to see the boundary as something enabling”—Paul Cilliers

“我們經常陷入這樣一個陷阱:將邊界這個概念看成是用來是將一件事與另一件事化分開,(比如劃清界線,劃分邊界,分割線,邊界線,領域邊界)

但是,我們更應該將邊界視為有限構成事物的一個事物。這種轉變將幫助我們將邊界視為一種賦能”——Paul Cilliers

banq:邊界也是一個事物,這個事物是一種構建事物,如同設計模式中的工廠模式或builder構建者模式,工廠物件或builder物件是一個專門的用來構建的物件事物,這種構建的能力是有限的,不是無限的,有限是指空間或時間上的有限,有界,有起點和終點,有生命週期,有作用域的。

因此,bounded context的bounded如果翻譯成有限這個詞可能更好,界限或有界都是一種靜態邊界線的意思,而有限則包含動態上構建時是有限的意思,不是源源不斷的構建,源源不斷無限的構建是流stream。

DDD中戰略基礎概念:

Domain = Boundary , BoundedContext @ UL, Aggregates *emerges* from BC

領域 等於邊界,有限上下文來自於或位於無所不在通用語言,聚合是從有限上下文中湧現出來的一種關係體。

只有領域的邊界是固定的,靜態的,而上下文的邊界則不是這樣,只有在上下文和聚合被建立構建時代表了一種有限,正如黑人 白人出生時是有皮膚的區別界線,但是出生以後的邊界就可能模糊了,人人平等了,都公平參與競爭,英雄就不問出處了,但是出處是有區別的。

有限上下文的出處是來自通用語言,從UL中有限地發現構建上下文,這樣的上下文肯定是有界的,或稱為有界的上下文,界限上下文。但是,我們不能認為上下文就永遠被界限限制住了,隨著時間發展,上下文之間的邊界可能會模糊,但只要構建時是有限地構建即可。

將BoundedContext看成有限地構建了的上下文,這樣做的好處是:將Bounded就可以看成一種賦能,是一個動詞,來自通用語言的賦能,BC就在DDD戰略設計和戰術設計之間架起了一座橋樑,賦能者(通用語言)可以通過BC賦能給戰術設計中的聚合、實體、值物件等概念,也就是說,我們可以從UL中挖掘或通過暗喻、隱喻等方式賦能戰術設計概念,典型案例見:通過語言的暗喻發現隱藏的DDD模型 - verraes

相關文章