Submit Search
Upload
Dci vs aggregate_dddtw_2021-0.3-preview
•
0 likes
•
528 views
teddysoft
Follow
Teddy在DDD TW 2021 演講投影片預覽版
Read less
Read more
Software
Report
Share
Report
Share
1 of 35
Download now
Download to read offline
Recommended
Dci vs aggregate_dddtw_2021-0.3-16-9
Dci vs aggregate_dddtw_2021-0.3-16-9
teddysoft
DDD + Clean Architecture: 從需求到實作
DDD + Clean Architecture: 從需求到實作
teddysoft
漫談重構
漫談重構
teddysoft
Bdd atdd sbe_tdd_ddd_published
Bdd atdd sbe_tdd_ddd_published
teddysoft
說出一嘴好設計 1.1
說出一嘴好設計 1.1
teddysoft
重構三兩事
重構三兩事
teddysoft
Pattern based problem solving-published
Pattern based problem solving-published
teddysoft
Agile the timeless way of software development-2019-05-17-v1.2-published
Agile the timeless way of software development-2019-05-17-v1.2-published
teddysoft
Recommended
Dci vs aggregate_dddtw_2021-0.3-16-9
Dci vs aggregate_dddtw_2021-0.3-16-9
teddysoft
DDD + Clean Architecture: 從需求到實作
DDD + Clean Architecture: 從需求到實作
teddysoft
漫談重構
漫談重構
teddysoft
Bdd atdd sbe_tdd_ddd_published
Bdd atdd sbe_tdd_ddd_published
teddysoft
說出一嘴好設計 1.1
說出一嘴好設計 1.1
teddysoft
重構三兩事
重構三兩事
teddysoft
Pattern based problem solving-published
Pattern based problem solving-published
teddysoft
Agile the timeless way of software development-2019-05-17-v1.2-published
Agile the timeless way of software development-2019-05-17-v1.2-published
teddysoft
從Bowling Game Kata看敏捷開發
從Bowling Game Kata看敏捷開發
teddysoft
當Scrum遇到Pattern
當Scrum遇到Pattern
teddysoft
跟著Teddy讀Pattern
跟著Teddy讀Pattern
teddysoft
洗白你的軟體架構
洗白你的軟體架構
teddysoft
如何學好設計模式
如何學好設計模式
teddysoft
了解模式讓你更敏捷 (C C Agile 活動分享)
了解模式讓你更敏捷 (C C Agile 活動分享)
teddysoft
從五個小故事看敏捷開發精神
從五個小故事看敏捷開發精神
teddysoft
軟體開發成功的秘訣
軟體開發成功的秘訣
teddysoft
[演講] Scrum導入經驗分享
[演講] Scrum導入經驗分享
teddysoft
那一夜我們說Pattern design patterns 20周年-published
那一夜我們說Pattern design patterns 20周年-published
teddysoft
好設計如何好 @ C.C. Agile #14
好設計如何好 @ C.C. Agile #14
teddysoft
[教材] 例外處理設計與重構實作班201309
[教材] 例外處理設計與重構實作班201309
teddysoft
Design Patterns這樣學就會了:入門班 Day1 教材
Design Patterns這樣學就會了:入門班 Day1 教材
teddysoft
搞懂Java例外處理的難題:Checked與Unchecked Exceptions不再是問題
搞懂Java例外處理的難題:Checked與Unchecked Exceptions不再是問題
teddysoft
Java 例外處理壞味道與重構技術
Java 例外處理壞味道與重構技術
teddysoft
模式入門第一堂課: 30分鐘寫出一個模式
模式入門第一堂課: 30分鐘寫出一個模式
teddysoft
More Related Content
More from teddysoft
從Bowling Game Kata看敏捷開發
從Bowling Game Kata看敏捷開發
teddysoft
當Scrum遇到Pattern
當Scrum遇到Pattern
teddysoft
跟著Teddy讀Pattern
跟著Teddy讀Pattern
teddysoft
洗白你的軟體架構
洗白你的軟體架構
teddysoft
如何學好設計模式
如何學好設計模式
teddysoft
了解模式讓你更敏捷 (C C Agile 活動分享)
了解模式讓你更敏捷 (C C Agile 活動分享)
teddysoft
從五個小故事看敏捷開發精神
從五個小故事看敏捷開發精神
teddysoft
軟體開發成功的秘訣
軟體開發成功的秘訣
teddysoft
[演講] Scrum導入經驗分享
[演講] Scrum導入經驗分享
teddysoft
那一夜我們說Pattern design patterns 20周年-published
那一夜我們說Pattern design patterns 20周年-published
teddysoft
好設計如何好 @ C.C. Agile #14
好設計如何好 @ C.C. Agile #14
teddysoft
[教材] 例外處理設計與重構實作班201309
[教材] 例外處理設計與重構實作班201309
teddysoft
Design Patterns這樣學就會了:入門班 Day1 教材
Design Patterns這樣學就會了:入門班 Day1 教材
teddysoft
搞懂Java例外處理的難題:Checked與Unchecked Exceptions不再是問題
搞懂Java例外處理的難題:Checked與Unchecked Exceptions不再是問題
teddysoft
Java 例外處理壞味道與重構技術
Java 例外處理壞味道與重構技術
teddysoft
模式入門第一堂課: 30分鐘寫出一個模式
模式入門第一堂課: 30分鐘寫出一個模式
teddysoft
More from teddysoft
(16)
從Bowling Game Kata看敏捷開發
從Bowling Game Kata看敏捷開發
當Scrum遇到Pattern
當Scrum遇到Pattern
跟著Teddy讀Pattern
跟著Teddy讀Pattern
洗白你的軟體架構
洗白你的軟體架構
如何學好設計模式
如何學好設計模式
了解模式讓你更敏捷 (C C Agile 活動分享)
了解模式讓你更敏捷 (C C Agile 活動分享)
從五個小故事看敏捷開發精神
從五個小故事看敏捷開發精神
軟體開發成功的秘訣
軟體開發成功的秘訣
[演講] Scrum導入經驗分享
[演講] Scrum導入經驗分享
那一夜我們說Pattern design patterns 20周年-published
那一夜我們說Pattern design patterns 20周年-published
好設計如何好 @ C.C. Agile #14
好設計如何好 @ C.C. Agile #14
[教材] 例外處理設計與重構實作班201309
[教材] 例外處理設計與重構實作班201309
Design Patterns這樣學就會了:入門班 Day1 教材
Design Patterns這樣學就會了:入門班 Day1 教材
搞懂Java例外處理的難題:Checked與Unchecked Exceptions不再是問題
搞懂Java例外處理的難題:Checked與Unchecked Exceptions不再是問題
Java 例外處理壞味道與重構技術
Java 例外處理壞味道與重構技術
模式入門第一堂課: 30分鐘寫出一個模式
模式入門第一堂課: 30分鐘寫出一個模式
Dci vs aggregate_dddtw_2021-0.3-preview
1.
Teddy Chen teddy@teddysoft.tw http://teddy-chen-tw.blogspot.tw/ Oct. 16
2021 @ DDD TW 16:30~17:20
2.
Copyright@2021 Teddysoft
3.
• 聽過DDD請舉手 • 實作過DDD請舉手 •
聽過DCI請舉手 • 實作過DCI請舉手 • 以上皆是請舉手 Copyright@2021 Teddysoft
4.
Copyright@2021 Teddysoft
5.
• 土豆 • 勉強 Copyright@2021
Teddysoft
6.
1. 事 物
的 意 義 , 須 放 在 特 定 Context 之下討論才有意義 2. 相 同 概 念 ( 名 詞 ), 在 不 同 Context之下可能有不同意義 Copyright@2021 Teddysoft
7.
Copyright© 2021 Teddysoft
《ezKanban》
8.
Bounded Context裡面 有什麼? Copyright@2021 Teddysoft
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.
Copyright@2021 Teddysoft 《ezKanban》
11.
貧血好還是充血好? Copyright@2021 Teddysoft
12.
Copyright@2021 Teddysoft
13.
Use Case是一種Context嗎? Copyright@2021 Teddysoft
14.
DDD有提到Use Case嗎? Copyright@2021 Teddysoft
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.
Copyright© 2021 Teddysoft
《Clean Architecture》
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.
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.
Copyright© 2021 Teddysoft
20.
Copyright@2021 Teddysoft 請看瀏覽器
21.
Copyright@2021 Teddysoft
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.
DCI為什麼主張在使用案例中 動態決定程式行為的意義? 為 什麼不是把程式行為綁定在 類別身上, 由類別決定? Copyright@2021
Teddysoft
24.
程式範例 Copyright@2021 Teddysoft
25.
Copyright@2021 Teddysoft
26.
Copyright@2021 Teddysoft 請看IntelliJ
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.
Copyright@2021 Teddysoft
29.
Copyright@2021 Teddysoft
30.
Copyright@2021 Teddysoft
31.
Copyright@2021 Teddysoft
32.
• 有感的好處 – 簡化Aggregate設計、實作與測試 •
真,單一責任 – 依據角色重新排版Event Storming • 有疑惑的理論好處 – 已經透過Event Storming切割出Task-Based使用 案例(Command),在此情況下是否真的需要DCI 強調的動態扮演不同角色的彈性? – Task-Based使用案例沒有很複雜的Interaction Copyright@2021 Teddysoft
33.
Copyright@2021 Teddysoft
34.
Copyright@2021 Teddysoft
35.
• 搞笑談軟工部落格 – http://teddy-chen-tw.blogspot.com •
搞笑談軟工Facebook – https://www.facebook.com/groups/teddy.tw • 泰迪軟體官方網站 – http://teddysoft.tw Copyright@ 2021 Teddysoft
Download now