一、發展由來
POP----OOP-----AOP---DDD
POP:(面向程序編程)
描述:考慮問題是1234步驟
特點:簡單,無法應對復雜需求
舉例子:把食物放冰箱
第一步:打開冰箱
第二步:塞進去食物
第三步:關冰箱
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服務
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/1057.html
標籤:領域驅動設計
上一篇:記錄:如何使用ASP.NET Core和EnityFramework Core實作 資料庫操作 和 資料庫物體 的專案分離
