Открытый закрытый принцип является самым основным принципом дизайна в мире Java. Это направляет нас, как построить стабильную и гибкую систему.
определение:
Программное предприятие, такое как классы, модули и функции, должна быть открыта для расширений и закрыта для модификаций.
Программные объекты, такие как классы, модули и функции, должны быть открыты для расширения, но закрыты для модификаций.
Значение принципа открытия и закрытия состоит в том, что программная организация должна достичь изменений посредством расширений, а не путем изменения существующего кода.
Программная организация включает в себя следующие детали:
Принцип открытия и закрытия является принципом ограничений на текущую конструкцию разработки, сформулированные для будущих вещей программного предприятия.
ПРИМЕЧАНИЕ. Принцип открытия и закрытия открыт для расширений и закрытия модификаций, не означает, что модификации не внесены. Изменения в модулях низкого уровня должны сочетаться с модулями высокого уровня, в противном случае это будет изолированный и бессмысленный фрагмент кода.
Типы изменений:
Основной путь проекта должен быть следующим: разработка проекта, реконструкция, тестирование, производство, эксплуатацию и техническое обслуживание. Реконструкция может изменить исходный дизайн и код, а эксплуатация и обслуживание могут минимизировать изменение исходного кода, поддерживать чистоту исторического кода и улучшить стабильность системы.
Важность принципа открытия и закрытия:
1. Влияние принципа открытия и закрытия на тесты. Принцип открытия и закрытия состоит в том, чтобы сохранить исходный тестовый код, все еще работающий нормально. Нам нужно только проверить расширенный код.
2. Принцип открытия и закрытия может улучшить возможности повторного использования. В объектно-ориентированном дизайне вся логика состоит из атомной логики, а не внедряет бизнес-логику независимо в классе. Только таким образом код может быть повторно использован. Чем меньше гранулярность, тем больше вероятность повторного использования.
3. Принцип открытия и закрытия может улучшить требования к объектно-ориентированному развитию.
Как использовать принцип открытия и закрытия:
1. Сначала абстрактные ограничения, расширяйте расширение через интерфейс или абстрактные ограничения класса и не позволяют публичным методам, которые не существуют в интерфейсе или абстрактном классе;
Во -вторых, попробуйте использовать интерфейсы или абстрактные классы для типов параметров и эталонных объектов, а не классов реализации;
В -третьих, постарайтесь оставаться стабильными как можно более, и после определения модификации не допускаются.
2. Метаданные модуля управления метаданными - это данные, используемые для описания среды и данных. С точки зрения непрофессионала, это параметры конфигурации. Параметры могут быть получены из файлов или из баз данных.
Весенние контейнеры являются типичным примером поведения модулей контроля метаданных, а Ultimate - инверсия контроля
3. Сформулирование хартии проекта. В команде очень важно установить хартию проекта, потому что в уставе определяют соглашения, которые должен соблюдать все сотрудники. Для проектов соглашения лучше, чем конфигурация.
4. Изменения в упаковке имеют два значения:
Во -первых, инкапсулировать те же изменения в интерфейс или абстрактный класс;
Во -вторых, инкапсулируют различные изменения в разные интерфейсы или абстрактные классы, и не должно быть двух разных изменений в одном и том же интерфейсе или абстрактном классе.
пример
Вот пример, прежде всего, плохой пример:
класс graphieditor {public void drawshape (shape s) {if (s.m_type == 1) DrawRectangle (ы); иначе if (s.m_type == 2) drawcircle (ы); } public void DrawCircle (Circle R) {....} public void drawRectangle (rectangle r) {....}} class shape {int m_type; } class rectange extends shape {rectangle () {super.m_type = 1; }} класс Circle Extends Shape {circle () {super.m_type = 2; }}Когда мы хотим расширить форму, сначала нам нужно понять класс Graphyeditor, затем добавить новый тип в Drawshape, а затем добавить функцию. Вот улучшенный код:
класс graphieditor {public void drawshape (shape s) {s.draw (); }} форма класса {Abstract void Draw (); } класс Rectangle Extends Shape {public void Draw () {// Нарисуйте прямоугольник}}
Нет необходимости понимать логику рисунка, поместить конкретную реализацию в подкласс.
Суммировать:
1. Соответствие принципам открытия и закрытия может улучшить масштабируемость и обслуживание программного обеспечения.
2. Большинство моделей дизайна и принципов дизайна посвящены реализации принципа открытия и закрытия.