@gitdev

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

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

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

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

Декоратор — не единственный верный способ соблюсти, но хорошо иллюстрирует, например отличным способом может быть вычленение какого-то поведения в отдельную абстракцию
Ответ написан
Bavashi
@Bavashi
"Когда вы меняете текущее поведение класса, эти изменения сказываются на всех системах, работающих с данным классом. Если хотите, чтобы класс выполнял больше операций, то идеальный вариант – не заменять старые на новые, а добавлять новые к уже существующим."
irsmeboddq2dcx1eaky5qo83v64.png
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
Hidden Pool Хабаровск
от 80 000 до 150 000 ₽
Telecom Club Санкт-Петербург
от 150 000 ₽
UnitBean Волгоград
До 120 000 ₽