Suas ideias em realidade digital!
Clean Architecture é um modelo de organização de código onde cada camada tem responsabilidade bem definida.
O objetivo é:
com.makrosites.app
├── domain
│ ├── model
│ ├── repository
│ └── usecase
├── data
│ ├── api
│ ├── repository
│ └── datasource
├── presentation
│ ├── ui
│ └── viewmodel
Contém regras de negócio puras. Não deve depender de Android.
data class User(
val id: Int,
val name: String
)
interface UserRepository {
suspend fun getUsers(): List<User>
}
Implementa o acesso a API ou banco.
class UserRepositoryImpl(
private val api: ApiService
) : UserRepository {
override suspend fun getUsers(): List<User> {
return api.getUsers()
}
}
Responsável por executar a regra específica.
class GetUsersUseCase(
private val repository: UserRepository
) {
suspend operator fun invoke(): List<User> {
return repository.getUsers()
}
}
class UserViewModel(
private val getUsersUseCase: GetUsersUseCase
) : ViewModel() {
private val _users = MutableLiveData<List<User>>()
val users: LiveData<List<User>> = _users
fun loadUsers() {
viewModelScope.launch {
_users.value = getUsersUseCase()
}
}
}
MVVM organiza a camada de apresentação. Clean Architecture organiza o projeto inteiro.
Você pode usar MVVM dentro da Clean Architecture.
Essa estrutura funciona perfeitamente com: