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)
}
}
Такой подход упрощает поддержку и тестирование кода, так как каждая часть отвечает за свою зону ответственности.