Назад к вопросам
VK
Senior
4
Какой принцип SOLID нарушен в текущей реализации, где сервис жёстко завязан на конкретной реализации хранилища (ArrayList)?
Компании, где спрашивали
Ответ от нейросети
sobes.tech AI
В данном случае нарушен принцип Dependency Inversion (D из SOLID). Этот принцип гласит, что модули верхнего уровня не должны зависеть от модулей нижнего уровня напрямую, а оба должны зависеть от абстракций. Если сервис жёстко завязан на конкретной реализации хранилища, например, на ArrayList, то он зависит от конкретного класса, а не от интерфейса или абстракции.
Правильный подход — определить интерфейс для хранилища (например, Repository или Storage), а сервис использовать именно этот интерфейс. Это позволит менять реализацию хранилища без изменения сервиса, повысит тестируемость и гибкость кода.
Пример:
interface Storage<T> {
void add(T item);
T get(int index);
}
class ArrayListStorage<T> implements Storage<T> {
private List<T> list = new ArrayList<>();
public void add(T item) { list.add(item); }
public T get(int index) { return list.get(index); }
}
class Service {
private Storage<String> storage;
public Service(Storage<String> storage) {
this.storage = storage;
}
// использование storage
}
Таким образом, сервис зависит от абстракции Storage, а не от конкретного ArrayList.