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

Какие плюсы и минусы композиции перед наследованием

Плюсы композиции:

  • Гибкость: можно менять поведение во время выполнения, подменяя компоненты
  • Избегает проблем хрупкости базового класса (fragile base class)
  • Позволяет соблюдать принцип единственной ответственности (SRP)
  • Уменьшает связность кода
  • Легче тестировать (можно мокать отдельные компоненты)

Минусы композиции:

  • Требует больше кода для делегирования методов
  • Менее интуитивна для простых случаев "is-a" отношений

Пример:

java
// Вместо наследования:
class Engine {
    void start() { /*...*/ }
}

class Car {
    private Engine engine; // композиция
    
    void start() {
        engine.start(); // делегирование
    }
}

Когда выбирать:

  • Если отношение "has-a" (у машины есть двигатель)
  • Когда нужно переиспользовать код без наследования иерархии
  • Когда поведение может меняться динамически
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

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

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

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