Что такое принцип открытого-закрытого (OCP)?

Принцип  открытости/закрытости  — это самый основной принцип проектирования в мире разработки программного обеспечения. Он помогает нам построить стабильную и гибкую систему.

Определение:

Программная сущность, такая как класс, модуль и функция, должна быть открыта для расширения и закрыта для модификации.

Смысл принципа открытия и закрытия заключается в том, что программный объект должен быть расширен для достижения изменений, а не путем модификации существующего кода для достижения изменений.

Принцип открытия и закрытия — это принцип, который ограничивает текущую разработку и проектирование будущих вещей программного объекта.

Примечание. Принцип открытия и закрытия открыт для расширения и закрыт для модификации. Это не означает, что никаких модификаций не будет. Изменения в низкоуровневых модулях должны быть сопряжены с высокоуровневыми модулями, иначе это будет изолированный и бессмысленный фрагмент кода.

Важность принципа открытия и закрытия:

  • Влияние принципов открытия и закрытия на тестирование

Принцип открытия и закрытия заключается в том, чтобы исходный тестовый код все еще мог нормально работать, нам нужно только протестировать расширенный код.

  • Принцип открытия и закрытия может улучшить возможность повторного использования

В  объектно-ориентированном дизайне вся логика объединяется из атомарной логики, вместо того, чтобы реализовывать бизнес-логику в классе независимо. Только таким образом можно повторно использовать код. Чем меньше степень детализации, тем больше вероятность повторного использования.

  • Открытый и закрытый принцип может улучшить ремонтопригодность
  • Требования к объектно-ориентированной разработке

Как использовать принцип открытия и закрытия:

Во- первых , ограничьте расширение через интерфейс или абстрактный класс, ограничьте расширение границы и не допускайте общедоступных методов, которых нет в интерфейсе или абстрактном классе;

Во- вторых , попробуйте использовать интерфейсы или абстрактные классы для типов параметров и ссылочных объектов вместо классов реализации;

В- третьих , уровень абстракции должен быть максимально стабильным, после его подтверждения никакие модификации не допускаются.

Инкапсуляция изменений имеет два значения:

Во-первых, инкапсулируйте те же изменения в интерфейс или абстрактный класс;

Во-вторых, инкапсулируйте различные изменения в разные интерфейсы или абстрактные классы. Два разных изменения не должны появляться в одном и том же интерфейсе или абстрактном классе.


Примеры

Например, открытие и закрытие дверей вручную.

Если есть новый спрос, необходимо увеличить функцию открытия и закрытия ящика вручную. Для кода вам нужно добавить класс Drawer и одновременно изменить класс Hand.

Следуя примеру принципа открытия и закрытия OCP, открытие и закрытие двери вручную зависит от интерфейса, и конкретный класс реализации реализует этот интерфейс.

Когда необходимо увеличить количество рук, открывающих и закрывающих холодильник, класс холодильника реализует этот интерфейс без изменения исходного класса и интерфейса Hand.

Дополнительные ресурсы по объектно-ориентированному стилю

4 комментария

Leave a Reply

Ваш адрес email не будет опубликован.