TGViewer
Java Java @javatg · 16.7K subscribers
Post #2352 1.97K
💡 Предпочитайте делегирование наследованию

Связь is-a выглядит удобно: создаём подкласс, наследуем поведение и пишем меньше кода.

Но есть цена.

✅ Подкласс получает весь API родителя.
✅ Он зависит от деталей реализации суперкласса.
✅ Изменение родительского класса может неожиданно сломать потомка.

И чем глубже иерархия, тем сложнее понять, откуда вообще взялось конкретное поведение.

Часто безопаснее композиция:


class OrderService {
private final PaymentService paymentService;
}


Вместо наследования:


class OrderService extends PaymentService {
}


Композиция связывает объекты. Наследование связывает их судьбы.

Если объекту просто нужна чужая функциональность, чаще лучше её делегировать, а не наследовать.
  • 👍 5
  • ❤ 4
  • 🔥 3
More from @javatg
  1. Oct 16, 2026🍃 Не раскладывайте весь Spring-проект по папкам controller, service и repository. В новом…
  2. Oct 15, 2026💡 100% покрытия тестами ≠ код без багов Coverage показывает, какие строки выполнились во…
  3. Oct 13, 2026💡 Описывайте состояния через enum вместо строк Статусы вроде "pending" и "finished" легко…
  4. Oct 12, 2026💡 Код работает на обычных данных? Проверьте, что происходит на границах. Баги часто прячу…
  5. Oct 10, 2026💡 Java: почему месяц `5` может оказаться июнем В Calendar месяцы нумеруются с нуля: январ…
  6. Oct 8, 2026🚀 Spring Boot 4: переименовали property для exception translation Было: spring.dao.except…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →