天天看點

【微服務】DDD深入淺出

一、DDD是什麼?

領域驅動設計(DDD) 做為一種軟體工程的方法論,它可以幫助我們設計高品質的軟體,或者說任何工程的設計都需要方法論,不論是城市設計、建築設計、室内設計。

比如沒有方法論的情況下樓是可以蓋起來的,或許整個樓道和窗戶上挂滿了電話線、閉路線、電線?下水道隔三差五就堵了?某一戶跳閘了導緻整個樓都停電了?那麼蓋樓前是否有好的方法論去模組化呢?

不論任何行業的工程設計都因該使用正确的方法論去設計。任何行業的方法論也離不開八個字 分而治之、擁抱變化。如果和城市的設計、建築的設計相比較,我認為軟體的設計會更複雜,軟體的疊代和變化周期更快,也意味着我們更需要好的方法論。

字面上的領域模型并不抽象,可以了解為

uml

模組化中的對象,它有什麼屬性?它有什麼行為?那麼就可以把它規劃成某個領域的概念。

DDD 是一個分而治之的過程,是一系列分而治之的方法論。

如何把一個公司的領域劃分成多個子域,比如教育公司會劃分成作業子域、課程子域。電商可能會劃出商品子域、物流子域。如何為每個子域劃分出多個實體、聚合、服務,如何每一個實體和聚合設計它們的事件,如何為每一個實體設計它們的倉庫。這就是DDD要做的事情!

具體可以參考相關文章中 引用貧血和充血的案例示範 PM不斷疊代需求的情況下如何進行代碼設計

繼續閱讀