Sobes.tech
Junior — Middle

Μπορείς να δώσεις ένα παράδειγμα που να δείχνει την εφαρμογή της αρχής της μοναδικής ευθύνης στις αρχές SOLID;

sobes.tech AI

Απάντηση από 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)
    }
}

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