領域驅動設計系列 三 事件驅動上

2021-09-22 09:10:08 字數 1166 閱讀 8724

今天講一下事件驅動,這個不是領域驅動設計裡的事件源(event source), 這個以後再講,今天主要講一下如何用事件來解耦,主要的原因是我們有個專案有個功能我覺得用事件的方式比較好,正好寫篇部落格,就不用專門給他們講了。

說到解耦,我們很熟悉分層設計,比如上層依賴於抽象,不依賴於具體的實現。比如乙個類使用另乙個類,我們使用介面而不直接使用實現類。

public equipmentservice(iemailservice emailservice, iequipmentrepository equipmentrepository)

比如我們乙個會議室預定系統,我們的乙個裝置壞了。我們需要通知預定這個會議室的所有人。於是我們需要發郵件。

偽**如下

public

class

equipmentservice

public

void

setequipmentbroken(string id)

}

但是,問題來了,如果後來我們要說,如果裝置壞了,我們要更改可用庫存的數量,這時候我們是不是要在這裡修改**而引入iinventoryservice? 後來如果經理說裝置壞了你們盡然不告訴我,你們要鬧哪樣?這個時候我們是不是要修改**引入ismsservice.info(manager)? 即使我們不考慮ocp原則,不考慮單一職責,我們程式設計師也會哭,我就deactive乙個裝置,你要我做這麼多事,我**清楚所有的功能?我就罵過程式設計師,你做這個功能呢為什麼沒考慮全!!!漏掉了這麼重要的功能。

而問題,程式設計師從來沒考慮全過,因此我就想辦法如何解決這個程式設計師不仔細的問題。

因為我熟悉ios的開發,我就想到了ios的notification center. 那我我deactive乙個裝置,我就只deactive這個裝置,很srp是不是? 但是別的地方如何拿到通知? 於是事件就自然的付出水面了。如果裝置被deactive了,程式就只需要喊一聲,老子把裝置deactive了,你們要鬧哪樣你們自己看著辦,**如下。

public

void

setequipmentbroken(string id)

);}

這樣,通知會議室預定者的模組去通知,給老闆發簡訊的模組就通知老闆就ok了。

王德水

領域驅動系列三

1 領域模型的重要性 領域模型是軟體專案中的核心,模型是團隊經過長時間的歸納總結形成的乙個與專案有關的概念集合,他用術語和關係表達了領域的深層含義,這種關係和語義提供了模型語言的語義,模型語言是為領域獨家定製的.十分的精確,並且他將開發過程和模型繫結到一起,並使 和模型緊密的繫結.但是還是要說一句,...

DDD 領域驅動設計學習(三) 領域事件

在eric的 領域驅動設計 中並沒有提到領域事件,領域事件是在後來才被正式提出來的,並成為ddd通用語言 ul 的正式組成部分。領域事件 de 是什麼?領域事件的作用又是什麼?介紹領域事件的書籍和文章也比較多了,本文最後也推薦了幾篇很好的文章。寫這篇文章更希望多思考一下自己的一些疑問,乙個是為什麼要...

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

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