Senior
40
Тәуелділіктің инверсия қағидатын бұзуды қалай түзетуге болады — бөлек сақтау орнына бөлек рефакторинг ұсыныңыз?
Сұралған компаниялар
AI-дан жауап
sobes.tech AI
Нарушение принципа инверсии зависимостей (Dependency Inversion Principle) часто проявляется, когда высокоуровневые модули зависят от низкоуровневых напрямую, вместо абстракций.
Чтобы исправить это, нужно выделить отдельный интерфейс хранилища и реализовать его в отдельном классе. Затем высокоуровневый модуль будет зависеть от интерфейса, а не от конкретной реализации.
Пример на Java:
// Интерфейс хранилища
public interface UserRepository {
User findById(String id);
void save(User user);
}
// Реализация хранилища
public class UserRepositoryImpl implements UserRepository {
// реализация методов доступа к БД
}
// Сервис, зависящий от абстракции
public class UserService {
private final UserRepository userRepository;
public UserService(UserRepository userRepository) {
this.userRepository = userRepository;
}
public User getUser(String id) {
return userRepository.findById(id);
}
}
Такой рефакторинг позволяет менять реализацию хранилища без изменения бизнес-логики и упрощает тестирование через подмену зависимостей.