Встречается на собеседованиях • сегодня

Когда требуется подмена одного класса другим

Подмена класса (или его реализации) требуется в нескольких случаях:

  1. Тестирование - подмена реальных зависимостей mock/stub объектами:
java
// Вместо реального сервиса используем mock для тестов
@Mock
PaymentService paymentService;
  1. Смена реализации без изменения кода клиента через интерфейсы:
java
interface Storage {
    void save(String data);
}

// Можно подменить DiskStorage на CloudStorage
Storage storage = new CloudStorage();

text

3. **Адаптация интерфейсов** через паттерн Адаптер:
```java
class LegacyServiceAdapter implements NewService {
    private LegacyService legacy;
    // Адаптируем методы legacy под новый интерфейс
}
  1. Декораторы для добавления функциональности:
java
DataSource ds = new LoggingDataSource(new BasicDataSource());

Ключевые принципы: работа через абстракции (интерфейсы), соблюдение LSP (подтипы должны быть заменяемы), инверсия зависимостей.

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы