DDD領域驅動的前生今世

1、發展由來

POP----OOP-----AOP---DDD數據庫

 

POP:(面向過程編程)

描述:考慮問題是1234步驟編程

特色:簡單,沒法應對複雜需求架構

舉例子:把食物放冰箱數據庫設計

第一步:打開冰箱.net

第二步:塞進去食物設計

第三步:關冰箱對象

OOP:面向對象編程

特色:把事物做爲對象考慮繼承

特性:封裝、繼承、多態作用域

描述:對象交互,完成功能開發

缺點:編譯時肯定,運行時肯定,不方便擴展

AOP(面向切面編程)

描述:既不修改類,又能擴展功能

好處:1.關注核心邏輯,Aop擴展公共邏輯

           2.代碼複用,集中管理,方便 維護升級

應用場景:1.Asp.net.core--filter

                   2.AutoFac的Aop擴展

DDD(領域驅動)

DDD領域驅動是什麼?

Domain-Driven-Design 

解決的問題:系統規模日益變大,爲了方便擴展,劃分出更大的盒子

Domin(領域)

描述:一個系統都是爲了解決一個問題,能夠把總的系統當作一個大盒子,而後把一個大盒子拆分紅幾個子系統,子系統叫作領域

特色:拆分做用域之後,會有統一語言

例子:博客有發帖,回帖,用戶,積分,能夠把這四個功能當作四個領域,發帖,回帖,用戶,積分

Driven(動詞-驅動-推進)

描述:基於驅動領域設計,以目標爲導向,爲領域作設計

特色:完成領域需求,程序分析時,不考慮實現

Design(設計)

描述:領域是核心,先肯定共同的領域,數據庫設計,代碼設計

與傳統開發對比:1.開發和需求統一規範不一樣

                             2.容易需求變動,需求分析不夠

                             3.傳統系統步驟:分析--數據庫設計--流程,一旦發生業務改變,整個系統變更特別大

DDD分析設計方法

畫盒子-----拆領域

DDD落實

描述:四個層次:UI(展現層)、Application層(應用層)、Domain(領域層)、Infrastructure(基礎設施層)

基礎設施層:

包含內容: 1.數據操做 2.數據存儲 3.經常使用幫助類 4.數據驗證

領域層:

描述:最核心重要的,體系架構都是基於領域驅動的

包含內容:數據、業務、工廠、倉儲

領域約束:聚合跟(AgregateRoot)

倉儲:數據固化,操做數據庫

倉儲操做聚合根

領域層:

描述:請求轉發,跨領域問題,這裏不包含任何領域邏輯

展現層:

描述:用來頁面展現

包含:DTO(爲須要的字段作最小原子化,須要那些字段就展現那些字段)

貧血模型:沒有任何邏輯

完成交互,專門爲UI服務

相關文章
相關標籤/搜索