DDD(領域驅動設計),你學會了沒?

一、 什麼是(DDD

Domain-Driven Design

)領域驅動?

DDD(Domain-Driven Design 領域驅動設計)是由Eric Evans最先提出,目的是對軟件所涉及到的領域進行建模,以應對系統規模過大時引起的軟件複雜性的問題。整個過程大概是這樣的,開發團隊和領域專家一起通過 通用語言(Ubiquitous Language)去理解和消化領域知識,從領域知識中提取和劃分為一個一個的子領域(核心子域,通用子域,支撐子域),並在子領域上建立模型,再重複以上步驟,這樣週而復始,構建出一套符合當前領域的模型。


通俗的理解為:先構建領域模型設計,然後通過領域模型設計驅動軟件架構的設計。那麼什麼是領域呢?

二、 什麼是領域?

領域:領域並不是什麼高深的知識,領域在我看來就是一個行業的劃分,比如一個電商領域,肯定包含了,產品,訂單,發票,物流的概念。


當我們在要開發一個大型軟件系統時,這時就要將系統劃分為多個子系統,這時我們對系統的劃分是基於領域的,也是基於業務的。


那麼哪些概念應該放在子系統中,這時便有界限上下文的概念。

三、 什麼是界限上下文?

在一個領域/子域中,我們會創建一個概念上的領域邊界,在這個邊界中,任何領域對象都只表示特定於該邊界內部的確切含義。這樣邊界便稱為限界上下文。限界上下文和領域具有一對一的關係。簡單來說就比如說,將一個公司,劃分為多個部門,每個部門有各自的成員,每個部門的成員負責各自部門內的任務。

四、 DDD領域驅動設計軟件架構?

DDD(領域驅動設計)並不要求採用特定的架構風格,因為它是對架構中立的。你可以採用傳統的三層式架構,也可以採用 eric evans的“領域驅動設計


DDD(領域驅動設計),你學會了沒?


User Interface:負責向用戶展現信息,並且會解析用戶行為,即常說的展現層。

Applicaiont: 應用層沒有任何的業務邏輯代碼,它很簡單,它主要為程序提供任務處理。

Domain: 這一層包含有關領域的信息,是業務的核心 ,領域模型的狀態都直接或間接(持久化至數據庫)存儲在這一層。

Infrastructure:為其他層提供底層依賴操作。

總結:

(DDD)領域驅動設計只是一種指導程序開發的思想,從領域驅動軟件設計架構,當然運用(DDD)領域驅動設計,不是說一定要用哪種設計,當然你運用DDD(領域驅動設計)的思想,而軟件架構依然採用原有的三層架構也是可以的.當然也可以採用 Eric Evans的領域驅動設計。



分享到:


相關文章: