Domain-Driven Design (DDD)是一門不明覺厲的軟體架構設計理論,本文整理了我的理解,以及在 Ruby on Rails 中怎麼派上用場。
我發現 DDD 每個人看到的重點都不一樣,我到現在還是覺得有種瞎子摸象的感覺。
我想這是因為 DDD 是個大雜燴,把軟體需求管理、大架構、小架構 在同一個理論下解釋。因此三個部分,看你愛講哪一塊,每個人看的重點不同。
1. 和領域專家的共通語言,重點放在與領域專家的溝通 。我認為這一塊就是需求管理、軟體規格、建模方法等。有很多其他書(例如 User Story Mapping)跟這部分重疊了,講的也比 DDD 詳細完整。
2. 大架構戰略層次: 拆解不同領域,例如用 microservice 來做,或是用 Modular 來做(下述) 。我認為這一塊是 DDD 比較精彩的部分,也是我認為最重要的部分。
3. 小架構戰術層次: 例如 Service Object。我認為這一塊偏向物件導向理論,我覺得也不是重點,有很多其他講物件導向的書在講了,例如 SOLID 和各種 Design Pattern 等等。用了這些招數,也不表示就是 DDD。這塊還有出一些很進階的大架構常跟DDD一起討論,例如 Hexagonal Architecture, Clean Architecture 等等,但我覺得都太難理解導入了,已經遠離DDD的本質。
閱讀全文〈淺談我對 Domain-Driven Design 的理解和 Rails 中的實作〉