為了感謝flyzb的思想給我的幫助, 我特定整理了一些他的大部分我覺得重要的思想. 分享給大家.
以下知識是關於領域驅動設計(DDD)的, 大部分摘自flyzb的思想,雖然在很多人看來並不贊同, 但我個人認為對我啟發很大. 有興趣的可以看一下.
我一直覺得不要盲目相信權威,比如不能一談起領域驅動設計,就一定認為國外的那個Eric Evans寫的那本書中的一些概念就一定是正確的,認為領域驅動設計就一定是聚合,聚合根,實體,值物件等概念。我們要有自己的思想,要有自己判斷真正的領域模型該是什麼樣子的勇氣和追求。
1. "領域驅動設計" = “問題域模型驅動領域建模” + “領域建模驅動軟體實現”
2. 問題域建模的過程就是業務領域分析的過程,對於企業而言就是業務架構的分析和建立過程,這裡不包含任何OO的設計成分,主要從組織、流程和業務能力三個維度來分析業務。
3. 記住很多模式沒有什麼用處,帶著問題在模式中尋找答案才是正確的使用方式,讓那種解決方案的思想融入到你的模型當中,然後徹底地忘掉那些所謂的模式名詞。
4. 好的領域建模應該具有柔性,能夠伴隨著使用者一起成長。
5. 這讓我意識到業務建模應該回歸自然:一談起來建模技術,就離不開國外提出的OO、EDA之類的東西,其實我們的老祖宗早就有了“摸脈”的說法,現在的SOA、ESB之類的東西是不是就像打造一個企業的“神經脈絡”,而“OO”是不是就像“神經元”,它們之間的通訊就是靠生物電脈衝,這就是訊息驅動。
6. 《領域驅動設計》一書中只是強調了業務的水平分割,然而在大專案裡還有垂直分割,注意垂直分割不完全等同於包的劃分。目前有一種非常錯誤的做法,就是一上來就開始物件建模,然後再進行歸類劃分模組;正確的做法應該是前期以確認領域邊界功能為主,後期以確認領域內的物件模型為主。關於領域的切分,《領域驅動設計》沒有過多談及,其實方法就是不斷對企業業務知識的學習和分析。當你對一個業務認識不清的時候,最好的辦法就是不同企業環境下去分析這個業務,那這個業務的所有發展變化就清楚了,這就像那些生物學家總是喜歡透過長期的野外考查來學習知識。這個工作做好了,專案就成功了50%。
7. 領域的邊界就是服務,也是對外提供服務的唯一入口。領域服務和領域物件模型是一個業務領域的2個不同側面。領域服務強調是從外向內看,反映了“外部對業務領域的使用功能”;領域物件模型強調業務領域就像一個獨立的具有一定自主能力的生命體,反映了“業務領域的內部執行機制”。領域物件模型的功能是不能對外暴露的,不然會造成外部對領域物件的耦合。
8. 不要一說“面向關係設計”就是錯的。因為使用者的角度看,業務本來就是面向關係和過程的,這非常自然;而從設計看,業務是不同主體在相互作用。這就是為什麼越靠近使用者的地方面向關係和過程的設計味道越濃的原因了。
9. “類和職責”的叫法讓我總感覺比較僵化,像是沒有生命的死細胞一樣,覺得這是一種西醫模式。我更崇尚一種中醫模式,強調建模是動態的、基於場景互動的,應該用更自然的還原業務本來面目的眼光去審視建模過程,也就是說“有機的業務建模”實際上就是“技術建模”的問題域建模,而“技術建模”只是“業務建模”的技術落地而已。
10. 關於建模工具,像“用例圖,流程圖,狀態圖之類”的並不是我理想的建模工具,雖然他們確實能表達一些東西。我理想的業務建模工具應該是能從角色(組織或者人)、流程、業務能力三個維度立體地、動態地分析描述業務模型,希望可以是一個動態的3D檢視和流圖,並可以按不同的維度分析展開。
我一直覺得不要盲目相信權威,比如不能一談起領域驅動設計,就一定認為國外的那個Eric Evans寫的那本書中的一些概念就一定是正確的,認為領域驅動設計就一定是聚合,聚合根,實體,值物件等概念。我們要有自己的思想,要有自己判斷真正的領域模型該是什麼樣子的勇氣和追求。
1. "領域驅動設計" = “問題域模型驅動領域建模” + “領域建模驅動軟體實現”
2. 問題域建模的過程就是業務領域分析的過程,對於企業而言就是業務架構的分析和建立過程,這裡不包含任何OO的設計成分,主要從組織、流程和業務能力三個維度來分析業務。
3. 記住很多模式沒有什麼用處,帶著問題在模式中尋找答案才是正確的使用方式,讓那種解決方案的思想融入到你的模型當中,然後徹底地忘掉那些所謂的模式名詞。
4. 好的領域建模應該具有柔性,能夠伴隨著使用者一起成長。
5. 這讓我意識到業務建模應該回歸自然:一談起來建模技術,就離不開國外提出的OO、EDA之類的東西,其實我們的老祖宗早就有了“摸脈”的說法,現在的SOA、ESB之類的東西是不是就像打造一個企業的“神經脈絡”,而“OO”是不是就像“神經元”,它們之間的通訊就是靠生物電脈衝,這就是訊息驅動。
6. 《領域驅動設計》一書中只是強調了業務的水平分割,然而在大專案裡還有垂直分割,注意垂直分割不完全等同於包的劃分。目前有一種非常錯誤的做法,就是一上來就開始物件建模,然後再進行歸類劃分模組;正確的做法應該是前期以確認領域邊界功能為主,後期以確認領域內的物件模型為主。關於領域的切分,《領域驅動設計》沒有過多談及,其實方法就是不斷對企業業務知識的學習和分析。當你對一個業務認識不清的時候,最好的辦法就是不同企業環境下去分析這個業務,那這個業務的所有發展變化就清楚了,這就像那些生物學家總是喜歡透過長期的野外考查來學習知識。這個工作做好了,專案就成功了50%。
7. 領域的邊界就是服務,也是對外提供服務的唯一入口。領域服務和領域物件模型是一個業務領域的2個不同側面。領域服務強調是從外向內看,反映了“外部對業務領域的使用功能”;領域物件模型強調業務領域就像一個獨立的具有一定自主能力的生命體,反映了“業務領域的內部執行機制”。領域物件模型的功能是不能對外暴露的,不然會造成外部對領域物件的耦合。
8. 不要一說“面向關係設計”就是錯的。因為使用者的角度看,業務本來就是面向關係和過程的,這非常自然;而從設計看,業務是不同主體在相互作用。這就是為什麼越靠近使用者的地方面向關係和過程的設計味道越濃的原因了。
9. “類和職責”的叫法讓我總感覺比較僵化,像是沒有生命的死細胞一樣,覺得這是一種西醫模式。我更崇尚一種中醫模式,強調建模是動態的、基於場景互動的,應該用更自然的還原業務本來面目的眼光去審視建模過程,也就是說“有機的業務建模”實際上就是“技術建模”的問題域建模,而“技術建模”只是“業務建模”的技術落地而已。
10. 關於建模工具,像“用例圖,流程圖,狀態圖之類”的並不是我理想的建模工具,雖然他們確實能表達一些東西。我理想的業務建模工具應該是能從角色(組織或者人)、流程、業務能力三個維度立體地、動態地分析描述業務模型,希望可以是一個動態的3D檢視和流圖,並可以按不同的維度分析展開。
相關文章
- 為了感謝大家對我的支援,我現在將我整理的FAQ第二版for oracle共享出來。Oracle
- 我把我自己的日期類庫分享出來給大家用
- 另外, 為了能讓大家對我有一個更加具體的瞭解, 我也特地按照flyzb的思想設計了一個基於領域事件和DDD的架構.事件架構
- 【我的總結——思想篇】
- 安裝是遇到錯誤,大家幫我看看,謝謝
- 請Banq別刪我的貼子,請這個論壇的高手們給我解決方案!謝了!
- 美團的這些AI應用,倒把我給整不會了AI
- Github | Rust整理資料,分享給大家,多謝大家的支援GithubRust
- 請幫我看看呼叫webservice的問題謝謝!Web
- 整理了一些熱門、含免費次數的api,分享給大家API
- 接手了一個外包開發的專案,我感覺我的頭快要裂開了~
- 整理了一波免費好用的api,分享給大家API
- 物件導向程式設計,我的思想[上]物件程式設計
- 物件導向程式設計,我的思想[下]物件程式設計
- 我學習的程式設計,都給我帶來了什麼?程式設計
- 為什麼我覺得Python爛的要死?Python
- 我感覺到的前端變化前端
- 為了落地DDD,我是這樣“PUA”大家的
- 我將青春奉獻給了我喜歡的事情,卻讓我無法解決溫
- 我做軟體開發的核心思想考量
- 給 PEPPA PIG 的感謝信
- 我已經寫了48年程式碼了,我感覺我還能寫下去
- 【Nginx】面試官問我Nginx如何配置WebSocket?我給他現場演示了一番!!Nginx面試Web
- 感謝有人給我提 issue【Laravel5.8 原始碼框架核心解析庫】Laravel原始碼框架
- 我們整理了20個Python專案,送給正在求職的你Python求職
- 為什麼我覺得 Java 的 IO 很複雜?Java
- 請各位高人幫我指點一下我的職業規劃!謝謝了!(5年多工作經驗)
- 我的原始碼讓貓給吃了原始碼
- iOS 14將隱私分享權還給使用者,我的資料我做主?iOS
- 繼linux命令之後,我又給你們整理了網路命令歸納,快給我來收藏Linux
- 慚愧,感覺我的軟體開發之路就要到此為止了
- 於是,我們給前端分享會定義了一個未定義的名字前端
- 我決不黑微軟。。也不知你說的對不對?大家來點有思想高度的分析微軟
- 我下載新的論壇,安裝出現錯誤,誰幫我解決下,謝謝
- 我的第一個entity Ejb就出錯!大家幫幫忙
- 我給中國??奧運?數做了視覺化視覺化
- 拯救者 Linux:我是如何給我的團隊引入 Linux 的Linux
- 優秀原始碼帶給我們的一些啟示原始碼