一、發展由來 POP OOP AOP DDD POP:(面向過程編程) 描述:考慮問題是1234步驟 特點:簡單,無法應對複雜需求 舉例子:把食物放冰箱 第一步:打開冰箱 第二步:塞進去食物 第三步:關冰箱 OOP:面向對象編程 特點:把事物作為對象考慮 特性:封裝、繼承、多態 描述:對象交互,完成 ...
一、發展由來
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服務