DDD 概念中的DDD

2022-02-19 17:03:12 字數 1811 閱讀 9044

ddd: 領域驅動設計,它是對物件導向的的分析和設計(ooad,object orient analysis design)的乙個補充,對技術框架進行了分層規劃,同時對每個類進行了策略和型別劃分。領域模型是領域驅動的核心 ,採用ddd的設計思想,業務邏輯不再集中在幾個大型的類上,而是在大量相對小的領域物件上,這些類具有自己的狀態和行為,每個類都是完成的獨立的,並與現實領域的業務物件形成一種對映。基於ddd的架構設計,保證了系統的可維護性,擴充套件性和敏捷性,在處理複雜業務邏輯方面有著明顯的優勢!

以下資訊是從上拷貝的,寫的很好,這確實是一種程式設計世界觀的改變,而傳傳統程式設計觀念完全不同

過去需求分析和系統設計都是分離的,正如我們國家「系統分析師」 和「系統設計師」 兩種職稱考試一樣,這樣割裂的結果導致,需求分析的結果無法直接進行設計程式設計,而能夠進行程式設計執行的**卻扭曲需求,導致客戶執行軟體後才發現很多功能不是自己想要的,而且軟體不能快速跟隨需求變化

ddd則打破了這種隔閡,提出了領域模型概念,統一了分析和設計程式設計,使得軟體能夠更靈活快速跟隨需求變化。

ddd革命性在於:領域模型準確反映了業務語言,而傳統的分層架構只關心資料, 這些資料物件除了簡單讀、寫操作外,沒有任何業務方法,被比喻成失血模型,那麼領域模型這種帶有業務方法的充血模型到底好在**?

看到領域模型**,就看到業務需求,沒有翻譯沒有轉換,保證軟體真正實現「拷貝不走樣」。

ddd最大的好處是:接觸到需求第一步就是考慮領域模型,而不是將其切割成資料和行為,然後資料用資料庫實現,行為使用服務實現,最後造成需求的首肢分離。ddd讓你首先考慮的是業務語言,而不是資料。重點不同導致程式設計世界觀不同。

成熟,清晰的分層架構

領域物件與世界的業務對映

明確的職責劃分

領域物件是核心

領域物件復用:完整的業務物件描述

設計利用:設計基於領域物件而非基於資料庫的

具備複雜業務邏輯的軟體開發

對設計和開發人員要求較高

不適合普通的curd操作

系統的維護性與擴充套件性較高

不使用ddd思想進行系統設計時,一般會分為3層,如資料層,業務層和表現層,而使用ddd這後,分層的方式發生了一些改變,先來看一下

表現層:也叫web層,ui層,一般體現出來的是頁面的布局,可以用web mvc,web form,win form等去實現

應用層:用來協調應用活動,它不包含業務邏輯,它不保留業務物件的狀態,但它儲存應用任務的進度狀態

領域層:包含領域資訊,這是業務軟體的核心,它保留業務物件的狀態,對業務物件和它們狀態的持久化工作委託給基礎設施層

基礎設施層:是其它層的基礎,實現對業務物件的持久化,還對web層可以引用本層

entities:這不是簡單的poco實體,而是具備了業務邏輯的實體

factories:工廠類,用來生產物件

respositories:持久化,它本身就是dao (data access objects) 資料訪問物件

services:服務層,為上層提供了操作的介面,負責物件領域物件進行除錯和封裝,同時提供了各種形式的服務  

ok,今天這講先說到這裡,只是概念,要求我們去理解它,事實上,這種理解確實有別於之前的架構思想,它是一種與傳統方式截然不同的,需要我們用心去體會!

ddd~概念中的ddd

ddd~充血模型和失血模型

ddd~基礎設施層

ddd~領域層

ddd~unity在ddd中的使用

回到目錄

DDD中相關概念

倉儲定義 在領域層和資料對映層的中介,使用類似集合的介面來訪問領域物件 martin fowler 實際上,倉儲被用於領域物件在資料庫上的操作 實體entity和值物件value types 一般來說,我們針對不同的實體 或聚合根aggregate root 會建立相對應的倉儲。方法簽名是指方法的返...

DDD核心概念

領域 指範圍,邊界,特定的區域。子域 把領域按照一定的業務規則劃分,進而劃分出多個子域,每個子域對應乙個更小的業務範圍。它是把問題逐步分解,降低業務理解和系統實現的複雜度的過程。它分為三類 核心域 通用域 支撐域。通用語言 定義上下文的含義。在事件風暴中,通過團隊交流達成共識的,能簡單清晰準確地描述...

DDD的基本概念介紹

ddd的基本概念澄清 目錄 什麼是ddd ubiquitous language 通用語言 layered architecture 分層架構 entity 實體 value ojbect 值物件 service 服務 module 模組 aggregate 聚合 factory 工廠 reposi...