Ce diaporama a bien été signalé.
Nous utilisons votre profil LinkedIn et vos données d’activité pour vous proposer des publicités personnalisées et pertinentes. Vous pouvez changer vos préférences de publicités à tout moment.
Teddy Chen
teddy@teddysoft.tw
http://teddy-chen-tw.blogspot.tw/
Oct. 16 2021 @ DDD TW
16:30~17:20
Copyright@2021 Teddysoft
• 聽過DDD請舉手
• 實作過DDD請舉手
• 聽過DCI請舉手
• 實作過DCI請舉手
• 以上皆是請舉手
Copyright@2021 Teddysoft
Copyright@2021 Teddysoft
• 土豆
• 勉強
Copyright@2021 Teddysoft
1. 事 物 的 意 義 , 須 放 在 特 定
Context 之下討論才有意義
2. 相 同 概 念 ( 名 詞 ), 在 不 同
Context之下可能有不同意義
Copyright@2021 Teddysoft
Copyright© 2021 Teddysoft 《ezKanban》
Bounded Context裡面
有什麼?
Copyright@2021 Teddysoft
Copyright© 2021 Teddysoft 《Domain-Driven Design: Tackling Complexity in the Heart of Software》
Domain
Events
Ubiquitous
La...
Copyright@2021 Teddysoft 《ezKanban》
貧血好還是充血好?
Copyright@2021 Teddysoft
Copyright@2021 Teddysoft
Use Case是一種Context嗎?
Copyright@2021 Teddysoft
DDD有提到Use Case嗎?
Copyright@2021 Teddysoft
Copyright© 2021 Teddysoft 《Domain-Driven Design: Tackling Complexity in the Heart of Software》
Domain
Events
Ubiquitous
La...
Copyright© 2021 Teddysoft 《Clean Architecture》
• 商業邏輯要放在哪裡? Entity Layer 或 Use Case
Layer (Application Service Layer) ?
• Clean Architecture 說
– Entity Layer
• Critical ...
Copyright© 2021 Teddysoft 《Domain-Driven Design: Tackling Complexity in the Heart of Software》
Domain
Events
Ubiquitous
La...
Copyright© 2021 Teddysoft
Copyright@2021 Teddysoft
請看瀏覽器
Copyright@2021 Teddysoft
• Data
– 資料類別,原本充血模型類別的演算法被抽離出來放到角色(Role)
– Role是沒有狀態的類別,類似domain service。但在DCI架構中,
Data可以在執行期間動態扮演不同角色
– Data扮演某個Role之後,該...
DCI為什麼主張在使用案例中
動態決定程式行為的意義? 為
什麼不是把程式行為綁定在
類別身上, 由類別決定?
Copyright@2021 Teddysoft
程式範例
Copyright@2021 Teddysoft
Copyright@2021 Teddysoft
Copyright@2021 Teddysoft
請看IntelliJ
• Step 1: 定義 TeamRoles => Content, Membership,
BoardAccess 與每一個角色需要使用的Data class
• Step 2: 實作 MembershipRole, BoardAccessR...
Copyright@2021 Teddysoft
Copyright@2021 Teddysoft
Copyright@2021 Teddysoft
Copyright@2021 Teddysoft
• 有感的好處
– 簡化Aggregate設計、實作與測試
• 真,單一責任
– 依據角色重新排版Event Storming
• 有疑惑的理論好處
– 已經透過Event Storming切割出Task-Based使用
案例(Command)...
Copyright@2021 Teddysoft
Copyright@2021 Teddysoft
• 搞笑談軟工部落格
– http://teddy-chen-tw.blogspot.com
• 搞笑談軟工Facebook
– https://www.facebook.com/groups/teddy.tw
• 泰迪軟體官方網站
– htt...
Prochain SlideShare
Chargement dans…5
×

sur

Dci vs aggregate_dddtw_2021-0.3-preview Slide 1 Dci vs aggregate_dddtw_2021-0.3-preview Slide 2 Dci vs aggregate_dddtw_2021-0.3-preview Slide 3 Dci vs aggregate_dddtw_2021-0.3-preview Slide 4 Dci vs aggregate_dddtw_2021-0.3-preview Slide 5 Dci vs aggregate_dddtw_2021-0.3-preview Slide 6 Dci vs aggregate_dddtw_2021-0.3-preview Slide 7 Dci vs aggregate_dddtw_2021-0.3-preview Slide 8 Dci vs aggregate_dddtw_2021-0.3-preview Slide 9 Dci vs aggregate_dddtw_2021-0.3-preview Slide 10 Dci vs aggregate_dddtw_2021-0.3-preview Slide 11 Dci vs aggregate_dddtw_2021-0.3-preview Slide 12 Dci vs aggregate_dddtw_2021-0.3-preview Slide 13 Dci vs aggregate_dddtw_2021-0.3-preview Slide 14 Dci vs aggregate_dddtw_2021-0.3-preview Slide 15 Dci vs aggregate_dddtw_2021-0.3-preview Slide 16 Dci vs aggregate_dddtw_2021-0.3-preview Slide 17 Dci vs aggregate_dddtw_2021-0.3-preview Slide 18 Dci vs aggregate_dddtw_2021-0.3-preview Slide 19 Dci vs aggregate_dddtw_2021-0.3-preview Slide 20 Dci vs aggregate_dddtw_2021-0.3-preview Slide 21 Dci vs aggregate_dddtw_2021-0.3-preview Slide 22 Dci vs aggregate_dddtw_2021-0.3-preview Slide 23 Dci vs aggregate_dddtw_2021-0.3-preview Slide 24 Dci vs aggregate_dddtw_2021-0.3-preview Slide 25 Dci vs aggregate_dddtw_2021-0.3-preview Slide 26 Dci vs aggregate_dddtw_2021-0.3-preview Slide 27 Dci vs aggregate_dddtw_2021-0.3-preview Slide 28 Dci vs aggregate_dddtw_2021-0.3-preview Slide 29 Dci vs aggregate_dddtw_2021-0.3-preview Slide 30 Dci vs aggregate_dddtw_2021-0.3-preview Slide 31 Dci vs aggregate_dddtw_2021-0.3-preview Slide 32 Dci vs aggregate_dddtw_2021-0.3-preview Slide 33 Dci vs aggregate_dddtw_2021-0.3-preview Slide 34 Dci vs aggregate_dddtw_2021-0.3-preview Slide 35
Prochain SlideShare
What to Upload to SlideShare
Suivant
Télécharger pour lire hors ligne et voir en mode plein écran

0 j’aime

Partager

Télécharger pour lire hors ligne

Dci vs aggregate_dddtw_2021-0.3-preview

Télécharger pour lire hors ligne

Teddy在DDD TW 2021 演講投影片預覽版

Livres associés

Gratuit avec un essai de 30 jours de Scribd

Tout voir
  • Soyez le premier à aimer ceci

Dci vs aggregate_dddtw_2021-0.3-preview

  1. 1. Teddy Chen teddy@teddysoft.tw http://teddy-chen-tw.blogspot.tw/ Oct. 16 2021 @ DDD TW 16:30~17:20
  2. 2. Copyright@2021 Teddysoft
  3. 3. • 聽過DDD請舉手 • 實作過DDD請舉手 • 聽過DCI請舉手 • 實作過DCI請舉手 • 以上皆是請舉手 Copyright@2021 Teddysoft
  4. 4. Copyright@2021 Teddysoft
  5. 5. • 土豆 • 勉強 Copyright@2021 Teddysoft
  6. 6. 1. 事 物 的 意 義 , 須 放 在 特 定 Context 之下討論才有意義 2. 相 同 概 念 ( 名 詞 ), 在 不 同 Context之下可能有不同意義 Copyright@2021 Teddysoft
  7. 7. Copyright© 2021 Teddysoft 《ezKanban》
  8. 8. Bounded Context裡面 有什麼? Copyright@2021 Teddysoft
  9. 9. Copyright© 2021 Teddysoft 《Domain-Driven Design: Tackling Complexity in the Heart of Software》 Domain Events Ubiquitous Language Bounded Context define model within names enter model gives structure to express model with
  10. 10. Copyright@2021 Teddysoft 《ezKanban》
  11. 11. 貧血好還是充血好? Copyright@2021 Teddysoft
  12. 12. Copyright@2021 Teddysoft
  13. 13. Use Case是一種Context嗎? Copyright@2021 Teddysoft
  14. 14. DDD有提到Use Case嗎? Copyright@2021 Teddysoft
  15. 15. Copyright© 2021 Teddysoft 《Domain-Driven Design: Tackling Complexity in the Heart of Software》 Domain Events Ubiquitous Language Bounded Context define model within names enter model gives structure to express model with
  16. 16. Copyright© 2021 Teddysoft 《Clean Architecture》
  17. 17. • 商業邏輯要放在哪裡? Entity Layer 或 Use Case Layer (Application Service Layer) ? • Clean Architecture 說 – Entity Layer • Critical Business Rules – Use Case Layer • Application-Specific Business Rules • 怎麼區分商業邏輯是Critical或Application-Specific? – It….depends! Orz • 如何重複使用商業邏輯? Copyright@2021 Teddysoft
  18. 18. Copyright© 2021 Teddysoft 《Domain-Driven Design: Tackling Complexity in the Heart of Software》 Domain Events Ubiquitous Language Bounded Context define model within names enter model gives structure to express model with
  19. 19. Copyright© 2021 Teddysoft
  20. 20. Copyright@2021 Teddysoft 請看瀏覽器
  21. 21. Copyright@2021 Teddysoft
  22. 22. • Data – 資料類別,原本充血模型類別的演算法被抽離出來放到角色(Role) – Role是沒有狀態的類別,類似domain service。但在DCI架構中, Data可以在執行期間動態扮演不同角色 – Data扮演某個Role之後,該Data物件看起來就變成屬於該Role的型別, 可以執行該Role所定義的方法 • Context – 物件的演算法必須放在一個特定情境(Context)去討論才可知道它 的意義,這個情境就是使用案例 • Interaction – 使用案例藉由指派若干Data物件扮演不同Role,並控制物件之間的協 作來完成使用案例,稱為互動(Interaction) Copyright@2021 Teddysoft 《The DCI Architecture by Trygve Reenskaug and James O. Coplien》
  23. 23. DCI為什麼主張在使用案例中 動態決定程式行為的意義? 為 什麼不是把程式行為綁定在 類別身上, 由類別決定? Copyright@2021 Teddysoft
  24. 24. 程式範例 Copyright@2021 Teddysoft
  25. 25. Copyright@2021 Teddysoft
  26. 26. Copyright@2021 Teddysoft 請看IntelliJ
  27. 27. • Step 1: 定義 TeamRoles => Content, Membership, BoardAccess 與每一個角色需要使用的Data class • Step 2: 實作 MembershipRole, BoardAccessRole • Step 3: 重構 Team – 實作TeamRoles.Content, MembershipRole, BoardAccessRole – 使用 TeamRoles.TeamData – 使用 MembershipRole, BoardAccessRole • Step 4: 重構 Team使其支援角色扮演 – 讓Team繼承DciAggregateRoot – 修改 use case 測試案例,使用 playRole 來執行程式 • Step 5: 新增角色BoardContentRole並將其動態加入Team Copyright@2021 Teddysoft 請看IntelliJ
  28. 28. Copyright@2021 Teddysoft
  29. 29. Copyright@2021 Teddysoft
  30. 30. Copyright@2021 Teddysoft
  31. 31. Copyright@2021 Teddysoft
  32. 32. • 有感的好處 – 簡化Aggregate設計、實作與測試 • 真,單一責任 – 依據角色重新排版Event Storming • 有疑惑的理論好處 – 已經透過Event Storming切割出Task-Based使用 案例(Command),在此情況下是否真的需要DCI 強調的動態扮演不同角色的彈性? – Task-Based使用案例沒有很複雜的Interaction Copyright@2021 Teddysoft
  33. 33. Copyright@2021 Teddysoft
  34. 34. Copyright@2021 Teddysoft
  35. 35. • 搞笑談軟工部落格 – http://teddy-chen-tw.blogspot.com • 搞笑談軟工Facebook – https://www.facebook.com/groups/teddy.tw • 泰迪軟體官方網站 – http://teddysoft.tw Copyright@ 2021 Teddysoft

Teddy在DDD TW 2021 演講投影片預覽版

Vues

Nombre de vues

419

Sur Slideshare

0

À partir des intégrations

0

Nombre d'intégrations

1

Actions

Téléchargements

4

Partages

0

Commentaires

0

Mentions J'aime

0

×