領域驅動設計系列(一) 為何要領域驅動設計?

2021-09-06 21:17:28 字數 1111 閱讀 6823

領域驅動設計最近貌似開始火起來了,越來越多的人開始認識到領域設計的重要性,從我做過的專案來看,似乎歐洲已經有很多的公司開始實施領域驅動設計了,我看領域驅動設計也有些時間了,但是網上不管是文章還是**,都顯得太過「高大上」,一談領域驅動設計,一大堆的概念一股腦的給你上上來,搞的有點暈頭轉向,而我想在一些中小專案實施領域驅動也遇到了不小的障礙,大家對很多東西都處於一種恐懼的狀態,而且在正真開始實施時,也遇到一些疑問,所以也想和大家交流學習,因此開始在此寫寫對領域驅動的理解,後面會有一些輕量的演進**。

所以,我就想我們做專案,大部分處理的應該是業務,如何讓程式設計師從資料儲存,模型轉換的大泥潭裡解放出來,領域驅動設計就進入了我的視線,當然光從資料這個角度還不足以選擇領域驅動設計,用乙個nosql資料庫是不是就解決了? 但是nosql也有一些問題,比如mongodb如何更優雅的保證事務以及資料的一致性等。

我們很多軟體的問題,大家都知道是需求的問題,也就是客戶的需求我們很難理解準確,導致程式設計師更加關注"how" 而忽略了"what", 最終做了幾個禮拜甚至更長時間,結果客戶會說:"what?! i told you", 但是客戶告訴我的,我們理解是不一樣的。比如客戶說:「 great job, i love you!」 這個love肯定不是男女之間的love, 我們拿到的是乙個客戶的需求,他的上下文是什麼? 比如說:「這個球打的好」, 如果是在打籃球,肯定說的事籃球,如果是在打桌球肯定說的是桌球。 而領域驅動設計裡我們可以讓業務人員更多的參與系統,更早的參與系統。

業務人員和我們使用一樣的語言,我們的程式比如讓業務盡量集中在領域裡,比如在傳統的資料驅動裡,如果說jack愛rose, 我們一般會這麼寫

userservice.love(jack, rose)
但是我們業務人員很奇怪誰love誰? 為什麼要userservice?, 如果我們寫成下面這樣

jack.love(rose)
還有如果我們用

company.hire(employee)
來代替

companyservice.hire(company,employee)
這樣我們就更容易讓業務人員參與進來,而且**可以更易於表示真實的業務場景。

為何要領域驅動設計

參考 領域驅動設計最近貌似開始火起來了,越來越多的人開始認識到領域設計的重要性,從我做過的專案來看,似乎歐洲已經有很多的公司開始實施領域驅動設計了,我看領域驅動設計也有些時間了,但是網上不管是文章還是 都顯得太過 高大上 一談領域驅動設計,一大堆的概念一股腦的給你上上來,搞的有點暈頭轉向,而我想在一...

為何要領域驅動設計

參考 領域驅動設計最近貌似開始火起來了,越來越多的人開始認識到領域設計的重要性,從我做過的專案來看,似乎歐洲已經有很多的公司開始實施領域驅動設計了,我看領域驅動設計也有些時間了,但是網上不管是文章還是 都顯得太過 高大上 一談領域驅動設計,一大堆的概念一股腦的給你上上來,搞的有點暈頭轉向,而我想在一...

為何要領域驅動設計?

領域驅動設計最近貌似開始火起來了,越來越多的人開始認識到領域設計的重要性,從我做過的專案來看,似乎歐洲已經有很多的公司開始實施領域驅動設計了,我看領域驅動設計也有些時間了,但是網上不管是文章還是 都顯得太過 高大上 一談領域驅動設計,一大堆的概念一股腦的給你上上來,搞的有點暈頭轉向,而我想在一些中小...