@zlodiak

Нарушает ли композиция принцип единой обязанности из solid?

Помогите пожалуйста разобраться нарушает ли наличие композиции в классе принцип единой обязанности из solid. Дело в том, что когда используется композиция, то по сути объект расширяется функциональностью другого объекта. Если он её будет использовать(а он конечно же будет, иначе зачем подключал), то получится, что он отвечает не только за себя, но и за другой объект.

Попробую пояснить изложенное при помощи примеров кода:

Тут код, который явно нарушает принцип потому что инстанс AreaCalc отвечает и за расчёт суммы, и за вывод её.

Тут код, который не нарушает принцип, потому что за расчёт суммы отвечает инстанс AreaCalc, а за вывод отвечает инстанс AreaOutput

Тут код, который тоже использует для расчёта суммы AreaCalc, а для вывода AreaOutput. НО при помощи композиции AreaOutput встроен в AreaCalc

Верно ли утверждение, что композиция нарушает принцип единой обязанности из solid?
  • Вопрос задан
  • 253 просмотра
Решения вопроса 1
sergey-gornostaev
@sergey-gornostaev Куратор тега Python
Седой и строгий
Нет, не нарушает. Композиция порождает зависимость, а не расширяет ответственность. Если зависимый класс соблюдает D, а класс зависимости соблюдает I и L, то всё в порядке.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы