@gitdev

Можете привести пример принципа открытости/закрытости?

Можете привести пример принципа открытости/закрытости?
  • Вопрос задан
  • 209 просмотров
Решения вопроса 1
Maksclub
@Maksclub
maksfedorov.ru
Декоратор — декорирующее поведение вынесено в др класс с др названием в рамках одной абстракции (соблюдается интерфейс). Это соблюдается open closed principle.

Но если Декорирующее поведение помещают в сам исходный класс с if/else — это нарушение принципа.

Пример: у вас есть бабушка, вы научили систему пенсий работать с этой бабушкой. Но в вашем приложении бабушка нужна одетой в защиту, в маске COVID-19 и с навыком спускаться на лыжах. Если все это поведение будет запихнуто в бабушку — вы нарушите принцип, тк придется бабушку править, а можно сделать декораторы "бабушка с лыжами" и "бабушка с маской" и все это будет все та самая корректная бабушка, которой легко сделать новое изменение новым декоратором, и не надо шатать все старое поведение.

Декоратор — не единственный верный способ соблюсти, но хорошо иллюстрирует, например отличным способом может быть вычленение какого-то поведения в отдельную абстракцию
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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