Home >> Blog >> 什麼是 DDD?

在持續開發SEO周邊軟體的過程中,總會面臨到許多的建構選項,DDD就是選擇之一。

什麼是 DDD?

如果我們在任何技術社群中詢問DDD是什麼,許多人可能會用一句話來定義:“ DDD是一種專注於領域的軟體構建方法。”

事實上,這個說法是真的!

但是我們可以說,DDD是一種讓您以正確的方式構建領域模型的方法。

但是什麼是領域模型?

如果我們尋找“模型”一詞的定義,我們會看到它是“縮小比例的表示”,一旦我們了解了我們正在工作的“範圍”是哪個領域,我們就會得出結論,領域模型是問題在現實世界中的表示。

這讓我們想起了學習面向對象時的一些學術定義:“類是描述現實世界中實體的行為和屬性的表示。”

但這並不意味著不能應用其他編程範式來享受 DDD 的所有好處。

DDD 不是架構

最初,DDD被用作軟體開發的一組模式和良好實踐。

如果您因為Entities、Services、Repositories等而關聯項目使用DDD。並且在極少數情況下它還使用Value Objects、Aggregates 、 Events 、 Modules 和 Factories。我有一個壞消息:你錯了!

對於這種類型的方法,我們將其命名為DDD-Lite。簡而言之,DDD-Lite會導致構建較差的領域模型,而使用DDD的目標是構建豐富的領域模型。

提示

根據我的經驗和閱讀的文獻,例如“Eric Evans,領域驅動設計——解決軟體核心的複雜性”、“Vaughn Vernon,實施領域驅動設計”和“Vaughn Vernon,領域驅動設計” Distilled”,我建議將 DDD 分成四個部分作為學習方法:

概念:模型、領域專家和其他不屬於戰略設計、戰術設計和架構的術語,我將其歸類為概念。

略設計:也稱為戰略建模,它是DDD的支柱,其主要目標是與整個項目團隊一起定義有界上下文、通用語言和上下文映射。

戰術設計:也稱為戰術建模,是DDD的支柱,與“構建塊”相關,即實體、服務、存儲庫、值對象、聚合、事件、模塊、工廠等。

建築設計:指您將使用的建築風格。您可以使用不同風格的架構(六邊形、分層架構、CQRS等)來應用DDD。

您需要充分了解這些問題中的每一個,才能真正成功實施DDD。

結論

當我們構建軟體時,我們構建的目的是解決或改進業務的某些方面,因此擁有無法解決預期問題的軟體是沒有意義的。

DDD為我們提供幫助,使我們的努力不會白費。

實施DDD並非易事,如果真的有意義,應該進行分析。DDD的存在是為了應用在復雜的業務場景中。如果您的域沒有那麼複雜,DDD可能不是最佳選擇。