💡 Java: делегирование часто безопаснее наследования
Наследование кажется удобным, пока суперкласс не начинает жить своей жизнью.
Если класс наследуется от родителя, он получает весь его API. Любое изменение сверху может внезапно сломать поведение дочернего класса.
С делегированием проще: объект хранит внутри helper/service и передаёт ему нужные вызовы.
Плюсы:
* меньше жёсткой связности
* проще тестировать и мокать
* легче менять реализацию
* меньше риска сломаться из-за изменений в родителе
Правило простое: наследуйтесь только когда связь is-a действительно железная. В остальных случаях чаще лучше композиция и делегирование.
Наследование кажется удобным, пока суперкласс не начинает жить своей жизнью.
Если класс наследуется от родителя, он получает весь его API. Любое изменение сверху может внезапно сломать поведение дочернего класса.
С делегированием проще: объект хранит внутри helper/service и передаёт ему нужные вызовы.
Плюсы:
* меньше жёсткой связности
* проще тестировать и мокать
* легче менять реализацию
* меньше риска сломаться из-за изменений в родителе
Правило простое: наследуйтесь только когда связь is-a действительно железная. В остальных случаях чаще лучше композиция и делегирование.