DDD的基本概念介紹

2021-10-02 02:33:36 字數 2204 閱讀 2518

ddd的基本概念澄清

目錄

什麼是ddd

ubiquitous language (通用語言)

layered architecture(分層架構)

entity(實體)

value ojbect(值物件)

service(服務)

module(模組)

aggregate(聚合)

factory(工廠)

repository(倉庫)

specfication(規格)

bounded context(界限上下文)

實現步驟:

•domain driven design

•領域是軟體要解決的問題區域

•通過對領域知識建立模型,形成團隊內各成員的通用語言,指導設計和實現,從而達到為客戶解決問題的目的

•當領域模型發生改變時,開發人員需要重構,以便反映模型的變化,這樣新知識就合併到軟體中

•將領域模型作為語言的支柱

•領域模型包括類和主要操作的名稱

•領域模型盡量以文字為主,穿插簡化圖為說明

•不管是畫圖、寫文件、寫**還是講話,都用的同一種術語

•語言是演進的

* 用分層來隔離領域

* 層中的任何元素都僅依賴於本層其他元素,或其下層元素。

* 高內聚,低耦合

* 領域層應重點放在如何表達領域模型上,而不需要考慮自己的顯示和儲存問題

•使用者介面層

•向使用者顯示資訊,解釋使用者命令

•應用層

•盡量簡單,不包含業務規則或知識

•只為下層的領域物件分配任務,使他們協作

•領域層

•負責表達業務概念,業務狀態資訊和業務規則

•基礎設施層

•上面各層提供通用的技術。比如持久化

•由標識定義的物件,而不是屬性

•整個生命週期都有聯絡性

•模型必須定義出「符合什麼條件才算是相同的事物」

•描述領域的某個方面,但本身沒有概念標識的物件

•關心它們是什麼,而不關心它們是誰

•值物件是不可變的,具體實現分為共享和複製

•領域操作(活動或者物件)

•定義能夠為客戶做什麼,是動詞而不是名詞

•操作是無狀態的

•結果和引數應該是領域物件

•是否包含業務規則來確定是應用還是領域service

•可以檢視細節,而不會被整個模型淹沒

•可以觀察module相互之間的關係,而不考慮細節

•將相同職責的物件放在一起

•作為資料修改的單元,一組相關物件的集合

•包括乙個根(root)和乙個邊界(boundary)

•根是aggregate內乙個特定的entity

•boundary定義了aggregate內有哪些

•外部引用時,只可引用根;而邊界內部的物件之間可以相互引用

•物件本身承擔大量的職責,讓複雜物件建立自身,會職責過載導致問題

•將職責交給客戶物件建立,會導致客戶必須了解物件內部規則,導致和領域類產生耦合

•factory隱藏建立細節,通常和aggregate有關

•當建立新物件未滿足固定規則時,factory應拒絕建立物件

•同一型別的物件的集合

•具有複雜的查詢、新增和刪除物件功能

•只為那些確實需要直接訪問的aggreagte提供repository,而不是所有物件都提供

•計算結果是真或者假的函式,一般用動詞或形容詞

•用於驗證物件是否滿足特定的業務規則

•用於repository查詢物件是否滿足要求

•用於建立物件時是否滿足需求

•大型專案都會存在多個模型

•權利上的劃分和管理級別的不同也可能要求模型分開

•標記不同模型之間的邊界和關係

•邊界內部嚴格保持模型的一致性

•防止重複的概念和假同源

•根據需求建立乙個初步的領域模型,識別出一些明顯的領域概念以及它們的關聯

•分析程式功能,識別出應用層和領域層的職責

•識別entity,value object,service等

•找出aggregate root

•為aggregate寫repository

•走查場景,分析領域模型是否解決業務需求

•考慮建立entity,value object,aggregate等是用factory還是構造,又或者是ioc

•重構模型

nginx基本概念介紹

1 nginx主要為優化效能,是一種反向 服 負載均衡務器。有報告表明能支援高達 50,000 個併發連線數。反向 伺服器 nginx 最常的用途是提供反向 服務,那麼什麼反向 呢?正向 相信很多大陸同胞都在這片神奇的土地上用過了,原理大致如下圖 伺服器作為客戶端這邊的中介接受請求,隱藏掉真實的客戶...

Spring基本概念介紹

spring的概述 spring是乙個開源的控制反轉 inversion of control,ioc 和面向切面 aop 的容器框架,它的主要目得是簡化企業開發而建立的。從上面的簡要介紹中,我們要知道spring的核心有兩部分 ioc 控制反轉 所謂控制反轉就是應用本身不負責依賴物件的建立及維護,...

Rabbit MQ基本概念介紹

rabbitmq介紹 rabbitmq是乙個訊息中介軟體,是乙個很好用的訊息佇列框架,這裡有幾個關鍵的名詞 connectionfactory connection channel都是rabbitmq對外提供的api中最基本的物件。connection是rabbitmq的socket鏈結,它封裝了s...