Bird
Raised Fist0
Android Kotlinmobile~5 mins

Clean Architecture layers in Android Kotlin - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is the main purpose of the Presentation Layer in Clean Architecture?
The Presentation Layer handles the user interface and user interaction. It displays data and sends user actions to the next layer without knowing business logic details.
Click to reveal answer
beginner
Which layer contains the business rules and application logic in Clean Architecture?
The Domain Layer contains business rules and application logic. It is independent of UI and data sources, focusing on what the app does.
Click to reveal answer
beginner
What role does the Data Layer play in Clean Architecture?
The Data Layer manages data sources like databases, network, or cache. It provides data to the Domain Layer and hides details of data fetching or storage.
Click to reveal answer
intermediate
Why is it important that the Domain Layer is independent of other layers?
Independence allows the Domain Layer to be reusable and testable. Changes in UI or data sources don’t affect business rules, making the app easier to maintain.
Click to reveal answer
intermediate
How do layers communicate in Clean Architecture?
Layers communicate through interfaces or abstractions. Higher layers depend on lower layers’ interfaces, not their implementations, ensuring loose coupling.
Click to reveal answer
Which layer in Clean Architecture is responsible for fetching data from a remote server?
APresentation Layer
BDomain Layer
CData Layer
DUI Layer
What does the Domain Layer mainly contain?
ABusiness rules and logic
BUser interface code
CNetwork calls
DDatabase schemas
Why should the Domain Layer be independent of the Data Layer?
ATo allow UI changes without affecting business logic
BTo make the app slower
CTo mix UI and data code
DTo avoid testing
Which layer directly interacts with the user in Clean Architecture?
AData Layer
BDomain Layer
CRepository Layer
DPresentation Layer
How do layers in Clean Architecture communicate?
ADirectly accessing each other's code
BThrough interfaces or abstractions
CBy sharing variables globally
DUsing UI events only
Explain the responsibilities of each layer in Clean Architecture and why this separation helps in app development.
Think about who talks to the user, who holds the app’s rules, and who manages data.
You got /4 concepts.
    Describe how communication between layers happens in Clean Architecture and why it is designed that way.
    Imagine layers as friends who only talk through letters, not by visiting each other’s homes.
    You got /4 concepts.

      Practice

      (1/5)
      1. Which layer in Clean Architecture is responsible for business rules and logic?
      domain, data, or presentation?
      easy
      A. Presentation layer
      B. Domain layer
      C. Data layer
      D. UI layer

      Solution

      1. Step 1: Understand the role of each layer

        The domain layer contains business rules and logic, independent of UI or data sources.
      2. Step 2: Match the layer to its responsibility

        Since business logic is in the domain layer, it is the correct answer.
      3. Final Answer:

        Domain layer -> Option B
      4. Quick Check:

        Business logic = Domain layer [OK]
      Hint: Business rules live in domain layer, not UI or data [OK]
      Common Mistakes:
      • Confusing data layer with domain layer
      • Thinking UI handles business logic
      • Mixing presentation with domain
      2. Which Kotlin syntax correctly defines a repository interface in the domain layer?
      ?
      easy
      A. interface UserRepository { fun getUser(id: Int): User }
      B. class UserRepository { fun getUser(id: Int): User }
      C. fun UserRepository() = User()
      D. val UserRepository = object { fun getUser() = User() }

      Solution

      1. Step 1: Identify interface syntax in Kotlin

        Interfaces use the keyword interface followed by function signatures without bodies.
      2. Step 2: Check each option

        interface UserRepository { fun getUser(id: Int): User } correctly declares an interface with a function signature. Others define classes or objects incorrectly for an interface.
      3. Final Answer:

        interface UserRepository { fun getUser(id: Int): User } -> Option A
      4. Quick Check:

        Kotlin interface syntax = interface UserRepository { fun getUser(id: Int): User } [OK]
      Hint: Interfaces use 'interface' keyword with function signatures [OK]
      Common Mistakes:
      • Using class instead of interface for repository
      • Defining function bodies inside interface
      • Using val or fun incorrectly for interface
      3. Given this code snippet in the data layer:
      class UserRepositoryImpl(private val api: UserApi) : UserRepository {
        override fun getUser(id: Int): User {
          return api.fetchUser(id)
        }
      }

      What does getUser(5) return?
      medium
      A. Null because fetchUser returns nothing
      B. An error because UserRepositoryImpl lacks a constructor
      C. A User object fetched from the API with id 5
      D. A compile-time syntax error

      Solution

      1. Step 1: Understand class and method behavior

        UserRepositoryImpl implements UserRepository and calls api.fetchUser(id) to get a User.
      2. Step 2: Analyze getUser(5) call

        Calling getUser(5) returns the User object fetched by api.fetchUser(5), assuming api works correctly.
      3. Final Answer:

        A User object fetched from the API with id 5 -> Option C
      4. Quick Check:

        Method calls API and returns User [OK]
      Hint: Implementation calls API method and returns result [OK]
      Common Mistakes:
      • Assuming missing constructor causes error
      • Thinking fetchUser returns null by default
      • Confusing syntax errors with runtime behavior
      4. Identify the error in this presentation layer code snippet:
      class UserViewModel(private val repo: UserRepository) {
        fun loadUser(id: Int) {
          val user = repo.getUser(id)
          println(user.name)
        }
      }
      medium
      A. UserViewModel should not call repository directly
      B. User object might be null causing a crash
      C. No error; code is correct
      D. UserRepository interface is not implemented

      Solution

      1. Step 1: Recall Clean Architecture dependencies

        The presentation layer (ViewModel) should depend on use cases in the domain layer, not directly on repository interfaces.
      2. Step 2: Identify the violation

        Directly injecting and calling UserRepository in ViewModel bypasses use cases, mixing concerns and violating layer separation.
      3. Final Answer:

        UserViewModel should not call repository directly -> Option A
      4. Quick Check:

        ViewModel -> UseCase -> Repository [OK]
      Hint: ViewModels call UseCases, not Repositories directly [OK]
      Common Mistakes:
      • Focusing on null safety (type system prevents null here)
      • Thinking no architecture error in the code
      • Assuming missing interface implementation
      5. You want to add caching to your app using Clean Architecture. Where should the cache logic be placed?
      Options:
      A) In the domain layer
      B) In the data layer
      C) In the presentation layer
      D) In the UI components
      hard
      A. Domain layer to keep business rules
      B. UI components for faster display
      C. Presentation layer to update UI directly
      D. Data layer to manage data sources including cache

      Solution

      1. Step 1: Understand caching responsibility

        Caching is a data management concern, related to how data is stored and retrieved.
      2. Step 2: Match caching to Clean Architecture layer

        The data layer handles data sources like network, database, and cache, so caching logic belongs here.
      3. Final Answer:

        Data layer to manage data sources including cache -> Option D
      4. Quick Check:

        Cache logic = Data layer [OK]
      Hint: Cache belongs in data layer managing data sources [OK]
      Common Mistakes:
      • Putting cache in domain layer (business logic)
      • Adding cache in UI or presentation layers
      • Mixing UI concerns with data management
      Recommended

      Ready to prove it?

      Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

      10 questions~5 mineasy hard