DDD(七)--劃分領域

一、引言

在與朋友交流中談到DDD,說了一大堆理論概念思想以後,卻對具體如何劃分領域問住了,接下來就以如何劃分領域來探討如下。學習

二、根據業務需求劃分領域

按照實現領域驅動設計一書中描述的DDD步驟主要有4步:優化

  1. 根據業務需求劃分出初步的領域和限界上下文,以及上下文之間的關係;
  2. 進一步分析每一個上下文內部,識別出哪些是實體,哪些是值對象;對實體、值對象進行關聯和聚合,劃分出聚合的範疇和聚合根;
  3. 爲聚合根設計倉儲,並思考實體或值對象的建立方式;
  4. 在工程中實踐領域模型,並在實踐中檢驗模型的合理性,倒推模型中不足的地方並重構。

目前對倉儲概念的學習還不夠深刻,也未用到實處,因此3和4暫時不深刻討論,僅對劃分領域第一步就說明了,先初步劃分。設計

經典DDD分層:視頻

我此次要作的就是劃分領域層。對象

2.一、分析需求

根據以前對領域的概念和上下文的瞭解,咱們首先要肯定整個項目的核心業務,以此爲問題域,再逐步展開。因此咱們使用DDD的思想對案例進行剖析。blog

在進行以前,咱們須要一個demo案例,就拿一個博客來講,以下圖就是一個簡單博客的領域劃分。圖片

一個博客簡單來講須要文章、用戶、評論、分類。面向對象思想來分析業務時,到達這一步就基本結束了,接下來就是建庫建表寫代碼了。可是DDD分析到這一步還未結束。開發

回顧書中所說:博客

一個領域本質上能夠理解爲就是一個問題域,只要是同一個領域,那問題域就相同。因此,只要咱們肯定了系統所屬的領域,那這個系統的核心業務,即要解決的關鍵問題、問題的範圍邊界就基本肯定了。重構

這句話中的重點:

  • 肯定所屬問題域
  • 業務的核心

對於博客的核心問題是文章,在不考慮其餘因素下,博客的核心功能就是展示文章給使用者看,既然如此核心域或者核心問題域就是展示文章,而如何展現(文字、圖片、視頻)、時效做用(建立時間)、所屬分類(方便使用者搜索)等等都是爲了知足核心問題域「展示文章」。

文章的來源爲用戶發佈的,不然文章就是無根之源,即用戶支撐文章。

評論的來源是用戶,評論也是豐滿整個文章的,但其內容又與文章屬於兩個部分,沒有評論的存在依然能夠有文章,因此評論爲支撐子域。文章類型亦是如此。

因而,能夠獲得如下領域:

三、小結

當咱們開發完成後,發現項目僅上線幾天就被封禁,緣由是有用戶上傳了一些違禁內容,因而咱們從新分析需求、劃分領域,又或者是當用戶提出新需求,例如給用戶推薦常常瀏覽文章的分類推薦文章給用戶,因而從新劃分領域,如此往復。

DDD的思想中,並不要求一次將全部領域劃分完美,但必需要肯定核心域,根據業務需求,無論完善優化,這一點相似於敏捷開發,優先設計或者說完成核心功能,其餘部分逐步完善。

相關文章
相關標籤/搜索