Upgrade to Pro — share decks privately, control downloads, hide ads and more …

模組化的Swift架構(二) DDD速成

模組化的Swift架構(二) DDD速成

2022/6/21 ios@Taipei分享
介紹Domain Driven Design

A3d3b179955bdea9fc05b3251f1b1f10?s=128

Hai Feng Kao

June 23, 2022
Tweet

More Decks by Hai Feng Kao

Other Decks in Programming

Transcript

  1. Domain Driven Design速成 Hai Feng Kao 2022/6/21 模組化的Swift架構(⼆)

  2. Domain Driven Design • 以領域(domain)為核⼼的設計思維 • 常⾒的設計思維 • UI驅動 •

    資料庫驅動 • API驅動 • 領域驅動 • 隕⽯驅動
  3. 開發流程

  4. 開發流程

  5. • ⽤來設計電路的程式⼀定要有 • 電阻、電容、腳位 • 銀⾏轉帳程式⼀定要有 • 活儲帳⼾、定存帳⼾、⾦額 • 叫⾞app⼀定要有

    • ⾞型、上⾞地點、路線、下⾞地 點 必也正名乎
  6. 六⾓形架構 https://vaadin.com/blog/ddd-part-3-domain-driven-design-and-the-hexagonal-architecture

  7. 領域模型 https://dotblogs.com.tw/regionbbs/2021/05/29/anemicdomainmodel

  8. 貧⾎模型 https://dotblogs.com.tw/regionbbs/2021/05/29/anemicdomainmodel

  9. DDD的設計模式

  10. https://speakerdeck.com/softleader/ru-he-jin-xing-dddshi-zuo-fe25e1b7-db0c-4d53-99b1-8ed9d1ca4837?slide=7

  11. • 給backend⽤的 • 只有main thread DDD程式的運作流程 https://speakerdeck.com/softleader/ru-he-jin-xing-dddshi-zuo-fe25e1b7-db0c-4d53-99b1-8ed9d1ca4837?slide=12

  12. • 收到Request • 從Respository取出物件 (Aggregate Root) • 呼叫物件的⽅法來處理資料 • 把處理完的資料(Aggregate

    Root) 存回Repository Backend運作流程
  13. • 收到Request • 從Respository取出物件 (Aggregate Root) • 呼叫物件的⽅法來處理資料 • 把處理完的資料(Aggregate

    Root) 存回Repository Backend運作流程 • 使⽤者打開App • ⼿指點⼀點 • 呼叫物件的⽅法來更新畫⾯ • ⼿指滑⼀滑 • 呼叫物件的⽅法來更新畫⾯ App運作流程
  14. • 收到Request • 從Respository取出物件 (Aggregate Root) • 呼叫物件的⽅法來處理資料 • 把處理完的資料(Aggregate

    Root) 存回Repository Backend運作流程 • 使⽤者打開App • ⼿指點⼀點 • 呼叫物件的⽅法來更新畫⾯ • ⼿指滑⼀滑 • 呼叫物件的⽅法來更新畫⾯ App運作流程 狀態被完整地保存在Repository 狀態被保存在UIKit、SwiftUI、第三⽅套件、⾃⼰寫的物件
  15. • 有領域 • 單機⼿遊 • 繪圖app、記事本、⾳樂播放軟體 • 沒有領域 • 呼叫API把傳回的資料呈現在畫⾯

    上 • 所以的邏輯判斷都由backend負責 把DDD應⽤在App上
  16. • 有領域 • 單機⼿遊 • 繪圖app、記事本、⾳樂播放軟體 • 沒有領域 • 呼叫API把傳回的資料呈現在畫⾯

    上 • 所以的邏輯判斷都由backend負責 把DDD應⽤在App上 佔99.9% 0.1%
  17. 如何設計模組化的App架構? 把DDD應⽤在App設計 https://betterprogramming.pub/ios-app-modularisation-the-starting-point-1419db0474ed

  18. 模組之間如何溝通? 把DDD應⽤在App設計 https://betterprogramming.pub/ios-app-modularisation-the-starting-point-1419db0474ed

  19. 限界上下⽂

  20. 六⾓形架構 https://vaadin.com/blog/ddd-part-3-domain-driven-design-and-the-hexagonal-architecture

  21. 共享程式碼

  22. 防腐層