Sobes.tech
Junior — Middle
99

Можешь привести пример, иллюстрирующий применение принципа единичной ответственности в принципах SOLID?

Ettevõtted, kust küsiti
Dogma

Vastus AI-lt

sobes.tech AI

Принцип единственной ответственности (Single Responsibility Principle, SRP) говорит, что класс должен иметь только одну причину для изменения, то есть отвечать за одну конкретную задачу.

Пример на Android: допустим, у вас есть класс UserManager, который одновременно отвечает за загрузку данных пользователя из сети и за сохранение этих данных в базу.

Это нарушение SRP, потому что класс отвечает за две разные задачи — сетевое взаимодействие и работу с базой.

Правильнее разделить эти обязанности:

class UserNetworkService {
    fun fetchUserData(userId: String): User {
        // код для загрузки данных из сети
    }
}

class UserRepository {
    fun saveUser(user: User) {
        // код для сохранения пользователя в базу
    }
}

class UserManager(
    private val networkService: UserNetworkService,
    private val repository: UserRepository
) {
    fun updateUser(userId: String) {
        val user = networkService.fetchUserData(userId)
        repository.saveUser(user)
    }
}

Такой подход упрощает поддержку и тестирование кода, так как каждая часть отвечает за свою зону ответственности.