Приведи пример использования принципа open/closed

Ответ

Принцип open/closed (открыто для расширения, закрыто для модификации) означает, что классы/компоненты должны быть расширяемы без изменения их исходного кода.

Пример с React-компонентом:

// Базовый компонент Button (закрыт для модификаций)
const Button = ({ onClick, children }) => (
  <button onClick={onClick} className="base-btn">
    {children}
  </button>
);

// Расширяем функциональность через композицию (открыт для расширений)
const IconButton = ({ icon, ...props }) => (
  <Button {...props}>
    <Icon name={icon} />
    {props.children}
  </Button>
);

В этом примере:

  1. Базовый Button не меняется при добавлении новых вариантов кнопок
  2. Новая функциональность добавляется через создание новых компонентов (IconButton)
  3. Можно добавлять любые варианты кнопок без риска сломать существующий код