DDD理论学习系列(5)-- 统一建模语言
1.引言
上一節講解了領域模型,領域模型主要是將業務中涉及到的概念以面向對象的思想進行抽象,抽象出實體對象,確定實體所對應的方法和屬性,以及實體之間的關系。然后將這些實體和實體之間的關系以某種形式(比如UML、圖形、代碼、文字描述等)展現出來。而領域模型是領域建模的結果,那如何建模呢?我們可以借助于UML。
我們知道UML(統一建模語言)是一種用于繪制軟件概念圖的圖形符號。在和他人交流以及幫助解決設計問題方法,圖示是最有效的。在DDD中我們習慣用UML進行領域建模,所以為了后續章節的展開,我們需要而且必須熟悉常用UML的使用。之前也寫了一篇文章,想要學習設計模式,你得先會看類圖,一張圖讀懂UML,介紹了一些基本的用法,不妨一看。
下面就開始簡單介紹下幾種常見的UML的基本用法。
2. UML的級別和類別
在《UML精粹》中,UML主要被分為三個級別:
概念級別:用來描述問題領域中概念和抽象的一種速記方法,沒有比較嚴格的語義規則。和源代碼之間沒有很強的關聯性。
規格說明級別:描繪問題的解決方案,目的是為了能夠轉換成源代碼。要遵循嚴格的語義規則。
實現級別:用來描繪已有的源代碼,如類圖。要遵循嚴格的語義規則。
UML主要有三種圖示類別:
靜態圖(static diagram):描述了類、對象、數據結構以及它們之間的關系,展現出軟件元素間不變的邏輯結構。類圖、對象圖都是靜態圖。
動態圖(dynamci diagram):展示軟件實體在運行過程中是如何轉換的,其中描述了運行流程或實體改變狀態的方式。順序圖、協作圖、狀態圖都是狀態圖。
物理圖(physical diagram):展示軟件實體不變的物理結構,描述了諸如源文件、庫、二進制文件、數據文件等物理實體以及它們之間的關系。
3. 案例分析
為了真正對UML有一個直觀的認識,我們還是結合具體的業務場景(購物車)舉例分析,進行UML圖示 設計。
3.1.類圖
類圖主要展示程序中主要的類和關系。
購物車主要涉及到四個對象:購物車、購物車子項、商品、類別。
在本圖中,所有的關系都是聚合關系。
3.2. 對象圖
對象圖展示的是系統執行的某個特定時刻的一組對象和關系,可以看作內存快照。
該圖示就展示了當前購物車有兩件商品。
3.3.順序圖
順序圖是一個動態模型,是為了清楚表達出消息的順序。
其中要注意幾個圖示:
虛線:生命線。
窄條小矩形:激活,表示函數執行的時間。
方括號中的布爾表達式:監護條件。
小圓圈箭頭:數據標記
3.4.協作圖
協作圖是為了表達出對象之間的關系。
3.5.狀態圖
狀態圖是為了理解系統的行為和狀態的轉換。
該圖就簡要描述了,訂單從正常、發貨、關閉之間的狀態轉換。
4.總結
本文通過簡單的案例簡單介紹了幾種常用的UML的用法。由于自己對UML也不是很了解,以上圖示難免有所紕漏。
UML本身是一個復雜的東西,要完全掌握它是需要耗費很大時間和精力。但是我們在建模時要本著越少越好的思想去使用它。不要過于追求圖示的詳細程度,且UML圖不是源代碼,沒有必要申明所有方法、變量和關系。
在學習UML的時候,不建議一上來就去找一些UML畫圖工具,直接在紙上寫寫畫畫就好,本文的所有圖示就是直接在草稿上設計的。
最后,最最最重要的是,請動手畫!
相關文章
DDD理論學習系列(1)-- 通用語言
DDD領域驅動之干貨 (一)
DDD理論學習系列(2)-- 領域
DDD理論學習系列(3)-- 限界上下文
DDD理論學習系列(4)-- 領域模型
事件總線知多少(2)
從事件和DDD入手來構建微服務
DDD領域驅動之干貨 (一)
WeText項目:一個基于.NET實現的DDD、CQRS與微服務架構的演示案例
【DDD/CQRS/微服務架構案例】在Ubuntu 14.04.4 LTS中運行WeText項目的服務端
原文地址:http://www.cnblogs.com/sheng-jie/p/6984213.html
.NET社區新聞,深度好文,微信中搜索dotNET跨平臺或掃描二維碼關注
總結
以上是生活随笔為你收集整理的DDD理论学习系列(5)-- 统一建模语言的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Chrome DevTools 调研笔记
- 下一篇: 在ASP.NET CORE 2.0使用S