咱們使用領域驅動設計(英文縮寫爲DDD)的方法來設計引擎,在引擎開發的過程當中,領域模型會不斷地演化。
本文介紹本系列使用的領域驅動設計思想的相關概念和知識點,給出了相關的資料。html
從0開發3D引擎(八):準備「搭建引擎雛形」github
下面的資料粗略地介紹了DDD的相關知識點:
領域驅動設計學習輸出
領域驅動設計(DDD)部分核心概念的我的理解數據庫
相關資料爲:
DDD理論學習系列設計模式
參考領域驅動設計學習輸出:網絡
領域模型包括領域服務、實體、值對象數據結構
相關資料爲:
領域驅動設計之實體、值對象、領域服務
DDD 領域驅動設計學習(五)- 實體/值對象/領域服務架構
可分爲四類:app
相關資料爲:
關於領域模型(貧血模型,充血模型)dom
DDD主要有分層、六邊形、洋蔥這幾種架構。其中,六邊形和洋蔥架構都運用了依賴倒置,比較相似。
架構資料:
DDD 領域驅動設計學習(四)- 架構(分層/六邊形/RESTful)
分層架構資料:
DDD分層架構的三種模式
洋蔥架構資料:
The Onion Architecture
相關概念參考領域驅動設計系列(2)淺析VO、DTO、DO、PO的概念、區別和用處:
VO(View Object):視圖對象,用於展現層,它的做用是把某個指定頁面(或組件)的全部數據封裝起來。
DTO(Data Transfer Object):數據傳輸對象,這個概念來源於J2EE的設計模式,原來的目的是爲了EJB的分佈式應用提供粗粒度的數據實體,以減小分佈式調用的次數,從而提升分佈式調用的性能和下降網絡負載,但在這裏,我泛指用於展現層與服務層之間的數據傳輸對象。
DO(Domain Object):領域對象,就是從現實世界中抽象出來的有形或無形的業務實體。
PO(Persistent Object):持久化對象,它跟持久層(一般是關係型數據庫)的數據結構造成一一對應的映射關係,若是持久層是關係型數據庫,那麼,數據表中的每一個字段(或若干個)就對應PO的一個(或若干個)屬性。
相關資料爲:
領域驅動設計系列(2)淺析VO、DTO、DO、PO的概念、區別和用處
相關資料爲:
DDD 領域驅動設計學習(一)- 領域模型和統一語言
重讀領域驅動設計——如何說好一門通用語言
咱們使用事件風暴做爲DDD的開始,獲得通用語言。
相關資料爲:
領域驅動設計: 服務邊界劃分
使用事件風暴探索業務全景
相關資料爲:
DDD理論學習系列(2)-- 領域
相關資料爲:
DDD理論學習系列(3)-- 限界上下文
參考DDD—上下文映射圖,上下文之間有下面的關係:
相關資料爲:
看看上下文映射的清晰視圖
DDD—上下文映射圖
聚合Aggregate就是一組相關對象的集合,咱們把它做爲數據修改和訪問的單元。一個聚合包含聚合根、實體和值對象。
相關資料爲:
領域模型:聚合、聚合根
領域驅動設計-聚合
在UML中,須要區分聚合關係和組合關係,詳見:
淺談UML中的聚合與組合
服務包括應用服務、領域服務、基礎服務。
基礎服務是指基礎設施中提供的服務,一般用於操做外部,如發送email等。
應用服務和領域服務的相關資料爲:
如何分辨應用服務與領域服務
領域驅動設計DDD之領域服務
咱們使用倉庫來操做PO。
相關資料爲:
DDD理論學習系列(12)-- 倉儲