1 of 10

DDD mix Clean Architecture

1/15

2 of 10

  • 設計大型系統方法論和概念
  • 持續的改善
  • 快速的迭代��Domain Driven Design is an approach to software development for complex needs by connecting the implementation to an evolving model.

3 of 10

  • 討論商業,系統,使用者流程的分析,而不是技術面上的分析
  • 一樣詞彙(Ubiquitous Language)

4 of 10

分層式架構 (Layered Architecture)

  • User Interface (使用者介面層)
    • 負責向使用者顯示資訊和解釋使用者指令
  • Application (應用層)
    • 定義軟體要完成的任務 (usecase),並指揮 Domain 來實現業務邏輯的計算。
  • Domain (領域層)
    • 負責保管業務概念、業務狀態以及業務規則。
  • Infrastructure (基礎設施層)
    • 為上面個層提供技術能力

5 of 10

Domain 層既然是軟體的核心,那就要保持它的高層地位。

6 of 10

依賴反轉原則(Dependency Inversion Principle, DIP)

高層模組不該依賴於低層模組,兩者都應該依賴於抽象介面。抽象介面不應該依賴於細節,細節應該依賴於抽象。

7 of 10

Clean Architecture

  • 分層規則

離 IO 越近的,代表越容易變化,因此放在最外層。

8 of 10

Clean Architecture

  • 相依性規則

原始碼依賴關係只能指向內部,朝向更高層級的策略。

9 of 10

Clean Architecture

  • 跨層規則

JSON

usecase 雙向介面

10 of 10

與 DDD 結合