Сергей Калабонга

Сергей Калабонга 

Разработка нa .NET

109subscribers

571posts

Showcase and bundles

190
A bundle is a collection, compilation, playlist, or catalog of posts that saves you from searching through the blog and lets you buy the entire content series in a single click.
goals2
13 of 500 paid subscribers
После того, как будет набрано 500 подписчиков, можно будет открыть онлайн курсы для разработчиков. Будем писать код вместе.
$25.59 of $238 raised
Нужно обновить конфигурацию компьютера, чтобы можно было делать больше видео за меньше время. Создание видео - очень трудоемкий и длительный процесс.

Почему композиция часто предпочтительнее наследования, и в каких случаях наследование всё же оправдано?

Ответ:
Наследование создаёт сильнейшую связанность в ООП: подкласс зависит от деталей реализации родителя, и это ломается при любом рефакторинге базового класса («хрупкий базовый класс»). Композиция прячет зависимость за интерфейсом — меняется реализация, потребители не замечают.
Наследование оправдано, когда:
  • Есть настоящее отношение «является» (is-a), стабильное во времени: JsonParseError — это ParseError. Всё соответствует LSP — подкласс можно подставить везде, где ожидался родитель, без сюрпризов.
  • Работает механизм расширения, заложенный автором: у родителя есть protected-хуки, а наследование — документированный способ кастомизации (как в некоторых фреймворках).
Но честно: в 90% случаев, когда мне хочется наследоваться ради переиспользования кода, я делаю композицию + делегирование или просто утилиту. А в языках с богатой алгебраической типизацией (Kotlin sealed classes, Rust enums) половина классических иерархий вообще заменяется матчингом по вариантам.
Subscription levels2

Простой

$2.41$2.18 per month
-10%
billed every 3 months
Начальный уровень подписки включает:
→ эксклюзивные материалы для подписчиков уровня "Начальный"
→ возможность отправлять личные сообщения

Продвинутый

$7.6 per month
Продвинутый уровень подписки включает всё что есть предыдущем уровни, и добавляет:
→ эксклюзивные видео ролики, которые недоступны на предыдущем уровне
→ отправка личных сообщений
→ исходные файлы проектов, показанных на видео
→ возможность влиять на выбор тем для новых роликов
→ еще больше эксклюзивных материалов для подписчиков этого уровня
Go up