Skip to Content

Заключение

Что важно запомнить о OCP

  1. OCP – это про направление изменений.
    Класс должен быть открыт для расширения, но закрыт для изменения. Если для добавления новой фичи вы меняете существующий код – вы нарушаете OCP. Если вы можете добавить фичу, написав новый класс – вы на верном пути.

  2. Не путайте абстракцию и сложность.
    Интерфейсы и абстрактные классы – это инструменты, а не самоцель. Иногда проще добавить if/else, чем создавать иерархию из трёх классов. Главное – осознанность, а не фанатизм.

  3. Главный признак нарушения – цепочки условий.
    Если вы видите if/else или switch по типу объекта или строки – это почти всегда нарушение OCP. Замените их на полиморфизм, стратегии или конфигурацию.

  4. Инструменты OCP – полиморфизм и конфигурация.
    Вместо жёстко зашитой логики используйте интерфейсы, стратегии, цепочки обязанностей, фабрики и конфигурацию. Это сделает код гибким без изменения существующих классов.

  5. OCP помогает другим принципам SOLID.

    • LSP (Liskov Substitution): наследники должны быть подставляемы без изменения клиентского кода — это основа для расширения через наследование.
    • ISP (Interface Segregation): узкие интерфейсы проще расширять, чем толстые.
    • DIP (Dependency Inversion): абстракции позволяют подменять реализации без изменения верхних уровней.

Помните: идеальный класс – это класс, который вы можете расширить, не заглядывая в его код. Если для добавления новой фичи вам нужно открыть существующий класс – скорее всего, OCP нарушен.

Теперь, когда вы разобрали девять реальных примеров и прошли чек-лист, вы готовы применять OCP в своих проектах. Переходите к следующему принципу – Liskov Substitution (LSP).

Last updated on