T Thingnoy
← กลับไปบทความ

Dependency Inversion — ดู arrow พลิกทิศ

กด Invert เพื่อดูว่าทำไม Business Logic ถึง ไม่ต้องรู้จัก ใครเลย

Tight coupling — Business Logic ผูกกับ concrete class
Business Logic FetchTodosUseCase Data Access TodoAPI (concrete) Protocol (abstraction) TodoRepository depends on (concrete) defines + uses implements Business Logic → TodoAPI (concrete class, change TodoAPI = change business logic)

Swap adapter — Business Logic ไม่กระทบเลย

กดแต่ละปุ่มเพื่อเปลี่ยน implementation. ดู "Files changed" ที่ด้านล่าง

Business Logic files changed
0
ไม่ต้องแตะ business logic เลย
Adapter files changed
1
แค่สร้าง/swap adapter ใหม่
TodoAPI.swift — concrete, tightly coupled Before
loading...
💡

Takeaway

Business Logic ไม่รู้จัก URLSession, ไม่รู้จัก Core Data, ไม่รู้จักอะไรเลย. มันรู้จักแค่ TodoRepository protocol ที่มันเป็นคน define เอง. เปลี่ยน REST → GraphQL, เพิ่ม cache, swap เป็น mock — ทุกอย่างทำได้โดย ไม่แตะ business logic เลย