成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

DDD 的七大關(guān)鍵概念,你知道嗎?

開發(fā) 前端
統(tǒng)一語言是領(lǐng)域驅(qū)動設(shè)計的關(guān)鍵概念之一。領(lǐng)域建模的核心難點就在于業(yè)務人員和技術(shù)人員使用了不同的概念(詞匯)來描述他們對軟件的理解。如果能使用同樣的語言交流,那么復雜軟件的設(shè)計就變得更加容易。

領(lǐng)域驅(qū)動設(shè)計是一種設(shè)計思想,來源于 Eric Evans  的一本書 Domain-Driven Design –Tackling Complexity in the Heart of Software。它倡導通過建立領(lǐng)域模型來驅(qū)動軟件的設(shè)計,也就是從業(yè)務知識出發(fā)設(shè)計業(yè)務人員和技術(shù)人員都能理解的模型

統(tǒng)一語言是領(lǐng)域驅(qū)動設(shè)計的關(guān)鍵概念之一。領(lǐng)域建模的核心難點就在于業(yè)務人員和技術(shù)人員使用了不同的概念(詞匯)來描述他們對軟件的理解。如果能使用同樣的語言交流,那么復雜軟件的設(shè)計就變得更加容易。

領(lǐng)域模型就是跨越業(yè)務領(lǐng)域作為問題空間和軟件解決方案空間的橋梁。

01 使用模型表達業(yè)務實體

使用模型來表達業(yè)務概念和知識,并指導數(shù)據(jù)庫、API 等軟件的進一步設(shè)計。模型思維是軟件工程中重要的思維之一,它可以簡化復雜問題,并從某一個視角出發(fā)讓人們更加容易理解問題。

模型是對現(xiàn)實世界的簡化,例如地圖就是一種有效的模型,幫助人們理解道路和街道。

領(lǐng)域模型就是對業(yè)務領(lǐng)域簡化的模型。

02 識別模型的邊界

領(lǐng)域模型集合之間由于業(yè)務的相關(guān)性可能形成松散的邊界,這些邊界就是我們分解復雜、大型問題為局部、消息問題的契機。

通過辨析模型的相關(guān)性,找到邊界就能為軟件模塊的劃分(單體架構(gòu))、服務的劃分(微服務架構(gòu))提供指導。

在領(lǐng)域驅(qū)動中,識別出來的邊界被稱為界上下文。

03 識別聚合

在數(shù)據(jù)庫的關(guān)系模型中,模型為一張網(wǎng)絡結(jié)構(gòu)。這樣對于代碼實現(xiàn)存在困擾,因為難以處理業(yè)務的一致性問題。例如,訂單、訂單項目、商品之間,訂單和訂單項目的關(guān)系更加密切,具有相同的業(yè)務生命周期。在領(lǐng)域驅(qū)動設(shè)計理念中,我們使用聚合代表一組模型的從屬關(guān)系,其中起到關(guān)鍵帶頭作用的模型被叫做聚合根,除此之外被叫做實體和值對象。

如果一個聚合只有一個實體,那么聚合根就是這個實體。

04 區(qū)分實體和值對象

除了聚合根和實體之外,有一些模型看起來就像一次性的,他們沒有自己的 ID 來標明身份,更多的是作為某個實體的一部分,表達幾個字段的集合。

例如,在電商系統(tǒng)中,用戶設(shè)定的常用地址,就是典型的實體,它有自己的 ID 作為身份。但當用戶為訂單選擇地址時,這時的地址只是訂單上的若干字段,我們就會把它處理為值對象。

05 操作模型

在領(lǐng)域驅(qū)動設(shè)計中,為了操作這些模型,又衍生了一些作為“操作者”的對象。

工廠:處理領(lǐng)域模型創(chuàng)建過程的對象,但有時候不是必須的。服務:用來處理某些業(yè)務邏輯的對象。例如,為訂單計算總價,或者校驗一些業(yè)務規(guī)則。倉儲:負責將領(lǐng)域模型持久化到數(shù)據(jù)庫中或從數(shù)據(jù)庫中重建的對象,它的目的是為了隔離領(lǐng)域模型和技術(shù)實現(xiàn)之間的差異。

06 對架構(gòu)分層

為了更好的組織項目中各種各樣的對象,我們需要像計算機網(wǎng)絡一樣分層,來簡化復雜項目的復雜性。

在領(lǐng)域驅(qū)動設(shè)計中,推薦使用四層架構(gòu):

  • 用戶接入層:處理用戶接入的數(shù)據(jù)結(jié)構(gòu),例如 RESTful API,或者事件。
  • 應用層:處理用戶的業(yè)務操作邏輯,也就是用例,它和用戶的使用場景相關(guān)。
  • 領(lǐng)域?qū)樱禾幚硗ㄓ玫念I(lǐng)域邏輯,也就是較為專業(yè)的業(yè)務邏輯,例如訂單價格計算。
  • 基礎(chǔ)設(shè)施層:用來和基礎(chǔ)設(shè)施適配,例如連接數(shù)據(jù)庫,操作 Redis等。

07 建立領(lǐng)域模型

為了從業(yè)務知識中提取出領(lǐng)域模型,人們發(fā)明了很多種方法。

事件風暴是一種流行的軟件建模方法。它的形式是通過工作坊引導業(yè)務人員和技術(shù)人員共同創(chuàng)作領(lǐng)域模型,以業(yè)務事件為線索,探索系統(tǒng)中可能的領(lǐng)域模型。

除了事件風暴之外,彩色建模也是一種常用的建模方法。它通過顏色區(qū)分不同領(lǐng)域模型的特點,來澄清領(lǐng)域模型的職責。彩色建模在過去的很多年里曾非常流行。

責任編輯:武曉燕 來源: ByteByteGo
相關(guān)推薦

2018-04-27 14:40:18

Java語言程序

2013-07-22 15:36:48

谷歌秘密項目

2010-03-29 17:08:04

Nginx squid

2012-12-04 18:11:46

LanSecS堡壘主機堡壘機

2018-07-05 14:42:52

大數(shù)據(jù)企業(yè)數(shù)據(jù)挖掘

2015-04-20 09:03:50

混合云混合云評估IT管理

2018-02-06 09:40:25

PythonOOP繼承

2021-07-06 18:12:40

芯片芯片發(fā)展芯片市場

2016-10-26 14:40:28

大數(shù)據(jù)基礎(chǔ)設(shè)施架構(gòu)

2016-10-27 14:02:56

大數(shù)據(jù)數(shù)據(jù)庫

2021-09-17 13:17:56

Spring 模塊開發(fā)

2015-03-05 09:18:03

2024-07-17 08:12:06

2023-12-12 08:41:01

2021-02-19 23:42:18

高考物聯(lián)網(wǎng)農(nóng)業(yè)

2021-03-14 10:43:25

僵尸網(wǎng)絡虛假信息錯誤信息

2024-02-26 00:00:00

模型元宇宙智能

2010-12-30 14:52:33

云基礎(chǔ)設(shè)施

2021-07-17 15:48:13

Rust編程語言關(guān)鍵字

2015-08-05 16:21:23

開源社區(qū)
點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 视频三区 | 在线日韩欧美 | 国内精品免费久久久久软件老师 | 91精品国产综合久久福利软件 | av黄色免费在线观看 | 在线观看视频亚洲 | 伊人精品一区二区三区 | 91 在线 | 国产96在线 | 久久免费精品视频 | 一级片av| 久久不卡视频 | 欧美福利视频一区 | 激情小说综合网 | 国产精品精品 | 精品国产18久久久久久二百 | 亚洲iv一区二区三区 | 亚洲福利一区 | 精品精品视频 | 欧美一区二区三区四区五区无卡码 | 97精品久久 | 精品国产一区久久 | 国产一区二区三区久久久久久久久 | 久久久精品 | 国产欧美视频一区二区 | 亚洲成人精品 | 韩日免费视频 | 久久91精品国产一区二区 | 天堂资源 | 免费在线观看一区二区 | 91视频在线 | 国产精品视频一区二区三区不卡 | 激情毛片 | 久久精品在线 | 黑人久久久 | 中文字幕日韩欧美一区二区三区 | 国产伦精品一区二区三区精品视频 | 伊人免费在线观看高清 | 日韩欧美视频在线 | 久久久久久免费观看 | 一区二区三区免费观看 |