# Interface-Based Design

> Interfaces as boundaries between layers and seams between platforms, and how DI binds interfaces to implementations.

- URL: https://dantech.academy/en/courses/kotlin-accelerator/engineer-builder/06-clean-architecture/lesson-04-interface-based-design
- Course: [Mobile Action Pro](https://dantech.academy/en/courses/kotlin-accelerator.md)
- Module: Clean Architecture in Depth
- Duration: 25 min
- Difficulty: intermediate
- Access: Enrolled students
- Tiếng Việt: https://dantech.academy/courses/kotlin-accelerator/engineer-builder/06-clean-architecture/lesson-04-interface-based-design.md

## Objectives

- Apply Dependency Inversion: put the interface on the side of whoever uses it
- Use interfaces for platform seams (audio, haptics, Google Sign-In) between Android and iOS
- Know that bindings live in DataModule, dataPlatformModule and SharedDomainModule, and that AppGraphTest checks them

## In this lesson

1. Lesson Goal
2. Part 1: What DIP Is
3. Part 2: Interfaces At Layer Boundaries
4. Part 3: Interfaces At Platform Boundaries
5. Part 4: Interface Or expect/actual
6. Part 5: DI Wires Interfaces To Implementations
7. Practice Exercise
8. Code Reading Path
9. Signs To Avoid
10. References
11. Key Points

## Study with an AI agent

The full lesson is for students of this course. Students open the lesson on the web and press **Markdown** to copy all of it, then paste it into Claude, ChatGPT, Cursor or whichever agent you use. Faster: mint a token at `/profile/ai-agents` and your agent reads lessons over MCP.

- [Join the course](https://dantech.academy/en/kotlin-accelerator/checkout)

---

- Previous lesson: [Gradle Multi-Module Structure](https://dantech.academy/en/courses/kotlin-accelerator/engineer-builder/06-clean-architecture/lesson-03-multi-module-structure.md)
- Next lesson: [Repository Pattern](https://dantech.academy/en/courses/kotlin-accelerator/engineer-builder/06-clean-architecture/lesson-05-repository-pattern.md)
