自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

DDD最全詳解(圖文全面總結(jié))

開(kāi)發(fā) 前端
實(shí)體是具有唯一標(biāo)識(shí)的對(duì)象,其生命周期貫穿系統(tǒng)中的多個(gè)狀態(tài)轉(zhuǎn)變。實(shí)體的標(biāo)識(shí)符通常是不可變的,而它的狀態(tài)可以變化。在校園教務(wù)系統(tǒng)中,“學(xué)生(Student)”就是一個(gè)實(shí)體。

DDD

DDD,全稱是:“Domain-Driven-Design”,翻譯過(guò)來(lái)就是:領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)(DDD)。

DDD,最早是埃里克·埃文斯(Eric Evans),出版了《領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)》這本書(shū),標(biāo)志著領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)(DDD)的正式誕生。

DDD 強(qiáng)調(diào)以業(yè)務(wù)需求為中心,以領(lǐng)域模型為核心,通過(guò)不斷迭代開(kāi)發(fā),確保軟件系統(tǒng)能夠準(zhǔn)確反映業(yè)務(wù)邏輯、和需求。

DDD原理

在領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)(DDD)中,領(lǐng)域模型通常被分為四層,以幫助開(kāi)發(fā)人員將業(yè)務(wù)邏輯、與技術(shù)實(shí)現(xiàn),進(jìn)行有效的分離。

如下圖所示:

圖片圖片

DDD 的四層架構(gòu),提供了一個(gè)清晰的分層結(jié)構(gòu),使得系統(tǒng)的各個(gè)部分職責(zé)分明。

1.用戶界面層

用戶界面層,負(fù)責(zé)與用戶交互,顯示數(shù)據(jù)并收集用戶輸入。

這一層主要處理 UI/UX 邏輯,如:數(shù)據(jù)展示、用戶輸入驗(yàn)證.........等。

它是系統(tǒng)的入口,通過(guò)各種用戶界面,比如:如網(wǎng)頁(yè)、移動(dòng)應(yīng)用、桌面應(yīng)用、與最終用戶進(jìn)行交互。

2.應(yīng)用層

應(yīng)用層定義了系統(tǒng)的主要用例,通過(guò)服務(wù)接口暴露這些用例,以便用戶界面層調(diào)用。

該層負(fù)責(zé)管理事務(wù)、協(xié)調(diào)不同領(lǐng)域?qū)ο蟮慕换ィ约疤幚碛脩粽?qǐng)求的工作流。

應(yīng)用層還負(fù)責(zé)管理事務(wù)、一致性,以及調(diào)度各種領(lǐng)域?qū)ο?,以完成用戶的業(yè)務(wù)需求。

比如:電商系統(tǒng)中的訂單管理、庫(kù)存管理、客戶賬戶管理.....等核心業(yè)務(wù)邏輯。

3.領(lǐng)域?qū)?/h3>

領(lǐng)域?qū)邮?DDD 的核心部分,負(fù)責(zé):實(shí)現(xiàn)業(yè)務(wù)邏輯和規(guī)則。

DDD ,包含了領(lǐng)域模型(比如:實(shí)體、值對(duì)象、聚合、領(lǐng)域服務(wù)...等),這些模型直接反映了業(yè)務(wù)需求。

領(lǐng)域?qū)泳哂懈叨葍?nèi)聚性,所有業(yè)務(wù)邏輯都集中在這一層,避免邏輯分散。

4.基礎(chǔ)設(shè)施層

基礎(chǔ)設(shè)施層,負(fù)責(zé)技術(shù)實(shí)現(xiàn)的細(xì)節(jié),比如:持久化、消息傳遞、外部系統(tǒng)集成、日志記錄等。

比如:MySQL 數(shù)據(jù)庫(kù)訪問(wèn)層、Redis 緩存層、Kafka 消息隊(duì)列集成.......等等。

基礎(chǔ)設(shè)施層應(yīng)盡量、與領(lǐng)域?qū)印⒑蛻?yīng)用層解耦,以保持系統(tǒng)的靈活性、和可替換性。

通過(guò)這種分層設(shè)計(jì),開(kāi)發(fā)團(tuán)隊(duì)可以更好地管理系統(tǒng)的復(fù)雜性,確保業(yè)務(wù)邏輯的準(zhǔn)確性和系統(tǒng)的可維護(hù)性。

DDD實(shí)踐

DDD 的實(shí)施,一般包含如下步驟:

圖片圖片

1.領(lǐng)域

首先,通過(guò)與領(lǐng)域?qū)<业木o密合作,深入理解業(yè)務(wù)領(lǐng)域,識(shí)別核心子領(lǐng)域、和業(yè)務(wù)邏輯。

領(lǐng)域是指一個(gè)特定的業(yè)務(wù)領(lǐng)域、或問(wèn)題空間。

DDD 強(qiáng)調(diào)對(duì)領(lǐng)域的深入理解,以構(gòu)建符合業(yè)務(wù)需求的軟件系統(tǒng)。

領(lǐng)域內(nèi)的所有規(guī)則、術(shù)語(yǔ)和概念都是業(yè)務(wù)專家、和開(kāi)發(fā)團(tuán)隊(duì)共同理解、和認(rèn)同的。

比如:電商系統(tǒng)的“領(lǐng)域”,可以是整個(gè)在線購(gòu)物平臺(tái),它包括了:商品管理、訂單處理、支付系統(tǒng)、客戶管理等多個(gè)子領(lǐng)域。

這個(gè)領(lǐng)域中的所有業(yè)務(wù)規(guī)則、和活動(dòng),都圍繞著:如何支持用戶購(gòu)買(mǎi)商品、處理訂單、進(jìn)行支付等關(guān)鍵業(yè)務(wù)功能。

2.領(lǐng)域模型

領(lǐng)域模型是對(duì)領(lǐng)域內(nèi)概念的抽象和簡(jiǎn)化,是 DDD 中的核心。

領(lǐng)域模型通過(guò)實(shí)體、值對(duì)象、聚合等構(gòu)建塊來(lái)描述業(yè)務(wù)邏輯和規(guī)則。

3.限界上下文

限界上下文,是在一個(gè)大的領(lǐng)域內(nèi)劃定的一個(gè)明確邊界,用于劃分、和隔離不同子域或模型的區(qū)域。

在不同的限界上下文內(nèi),相同的術(shù)語(yǔ)可能具有不同的含義。

一個(gè)限界上下文包含一個(gè)清晰定義的領(lǐng)域模型,確保在該上下文中,概念的一致性、和統(tǒng)一性。

如下圖所示:

圖片圖片

比如:在電商系統(tǒng)中,不同的限界上下文,可能包括:“訂單管理上下文”、和“庫(kù)存管理上下文”。

訂單管理上下文:處理用戶訂單的創(chuàng)建、修改、支付、取消....等功能。

在這個(gè)上下文中,“訂單”主要涉及客戶信息、支付狀態(tài)。。。等。

庫(kù)存管理上下文:負(fù)責(zé)管理商品的庫(kù)存數(shù)量、倉(cāng)庫(kù)位置。。。等。

在這個(gè)上下文中,“訂單”更多地與庫(kù)存扣減、出貨等操作相關(guān)。

4.模型驅(qū)動(dòng)設(shè)計(jì)

模型驅(qū)動(dòng)設(shè)計(jì)是DDD的核心理念,它主張以領(lǐng)域模型為基礎(chǔ),來(lái)驅(qū)動(dòng)軟件系統(tǒng)的設(shè)計(jì)與開(kāi)發(fā)。

比如:在訂單管理上下文中,團(tuán)隊(duì)通過(guò)與領(lǐng)域?qū)<矣懻摚瑒?chuàng)建了一個(gè)領(lǐng)域模型。

其中包括“訂單(Order)”、“訂單項(xiàng)(OrderItem)”...等實(shí)體,以及訂單的各種狀態(tài)(如“待支付”、“已支付”、“已發(fā)貨”等)。

該模型驅(qū)動(dòng)了系統(tǒng)的設(shè)計(jì),開(kāi)發(fā)團(tuán)隊(duì)根據(jù)模型定義數(shù)據(jù)庫(kù)結(jié)構(gòu)、API接口和業(yè)務(wù)邏輯,實(shí)現(xiàn)了與訂單相關(guān)的功能。

5.聚合

聚合是指一組相關(guān)對(duì)象的集合,通常通過(guò)聚合根進(jìn)行訪問(wèn)、和管理。

聚合根是控制、和管理聚合內(nèi)部狀態(tài)的一部分,它負(fù)責(zé)維護(hù)聚合的一致性。

比如:在訂單管理上下文中,“訂單”可以作為一個(gè)聚合,包含:“訂單項(xiàng)(OrderItem)”、和“支付信息(PaymentInfo)”。

在這個(gè)聚合中,所有操作都通過(guò)訂單這個(gè)聚合根來(lái)進(jìn)行,以確保聚合內(nèi)部的規(guī)則和約束得以維護(hù)。

6.實(shí)體

實(shí)體是具有唯一標(biāo)識(shí)的對(duì)象,其生命周期貫穿系統(tǒng)中的多個(gè)狀態(tài)轉(zhuǎn)變。

實(shí)體的標(biāo)識(shí)符通常是不可變的,而它的狀態(tài)可以變化。

在校園教務(wù)系統(tǒng)中,“學(xué)生(Student)”就是一個(gè)實(shí)體。

如下圖所示:

圖片圖片

每個(gè)學(xué)生都有一個(gè)唯一的學(xué)號(hào)作為標(biāo)識(shí)符,即使學(xué)生的姓名、地址等其他屬性發(fā)生變化,學(xué)號(hào)仍然保持不變,學(xué)號(hào)是這個(gè)實(shí)體的唯一標(biāo)識(shí)。

7.值對(duì)象

在“學(xué)生信息管理上下文”中,“聯(lián)系方式(ContactInfo)”可以作為一個(gè)值對(duì)象。

聯(lián)系方式(ContactInfo):包含電話、郵箱...等信息。

DDD領(lǐng)域驅(qū)動(dòng)設(shè)計(jì),可以幫助團(tuán)隊(duì)更好地組織、和管理復(fù)雜的業(yè)務(wù)邏輯,使系統(tǒng)能夠有效應(yīng)對(duì)業(yè)務(wù)需求的變化。

責(zé)任編輯:武曉燕 來(lái)源: mikechen的互聯(lián)網(wǎng)架構(gòu)
相關(guān)推薦

2024-07-26 10:35:00

2024-08-29 10:23:42

2024-05-31 13:34:57

2024-12-31 00:00:01

驅(qū)動(dòng)設(shè)計(jì)應(yīng)用場(chǎng)景業(yè)務(wù)邏輯

2024-08-08 13:01:53

2024-08-12 16:09:31

2024-08-13 15:07:20

2024-11-06 09:54:58

SpringJava開(kāi)發(fā)

2024-09-26 13:33:12

2024-07-12 08:42:58

Redis高性能架構(gòu)

2024-08-07 14:56:00

Nginx反向代理配置

2024-11-06 12:29:02

2025-01-15 08:34:00

分布式事務(wù)服務(wù)

2024-09-14 11:36:02

2024-11-15 12:04:33

K8S容器化應(yīng)用

2025-01-26 11:54:39

分布式存儲(chǔ)系統(tǒng)

2016-01-28 14:41:06

CC++編碼

2016-01-15 09:38:49

2024-10-31 11:52:05

緩存預(yù)熱系統(tǒng)

2024-08-30 10:29:21

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)