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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


Примеры

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

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

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

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

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

Эта статья также доступна на Deutsch, English, Español, فارسی, Français, Bahasa Indonesia, 日本語, Polski, Portuguese, Việt Nam, 简体中文 and 繁體中文

Оставить ответ

Ваш адрес email не будет опубликован. Обязательные поля помечены *