Загрузка страницы

SOLID принципы: OCP (Открытости/закрытости (Open Closed Principle)

При́нцип откры́тости/закры́тости (англ. The Open Closed Principle, OCP) — принцип ООП, устанавливающий следующее положение: «программные сущности (классы, модули, функции и т. п.) должны быть открыты для расширения, но закрыты для изменения»; Software entities (classes, modules, functions, etc.) should be open for extension, but closed for modification (Bertrand Meyer)

- открыты для расширения: означает, что поведение сущности может быть расширено путём создания новых типов сущностей.
- закрыты для изменения: в результате расширения поведения сущности, не должны вноситься изменения в код, который эту сущность использует.
- Ценность принципа: нет необходимости в регрессионном тестировании
Термин «принцип открытости/закрытости» имеет два значения:

1. Принцип открытости/закрытости Мейера
2. Полиморфный принцип открытости/закрытости

Бертран Мейер в основном известен как основоположник термина Принцип открытости/закрытости, который появился в 1988 году в его книге Object-Oriented Software Construction, отвечая на вопрос:

1. Как можно разработать проект, устойчивый к изменениям, срок жизни которых превышает срок существования первой версии проекта?
2. однажды разработанная реализация класса в дальнейшем требует только исправления ошибок, а новые или изменённые функции требуют создания нового класса
3. реализация интерфейса может быть унаследована и переиспользована, но интерфейс может и измениться в новой реализации

Полиморфный принцип открытости/закрытости:

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

Статья Роберта С. Мартина «The Open-Closed Principle» в 1996 была одной из плодотворных статей для популяризации такого подхода
Крэйг Ларман отнёс термин Принцип открытости/закрытости к шаблону Алистэра Кокбёрна, названного Protected Variations

Курсы для новичков:
JAVA - https://bit.ly/3i9DlOa
JAVA Start - https://bit.ly/2DIfBBK
Инструментарий JAVA - https://bit.ly/2XClPdz
Automation QA (Java) - https://bit.ly/31viHS9
ANDROID - https://bit.ly/2XwHofC
C#/.NET - https://bit.ly/3fDLSqW
C# START - https://bit.ly/3gA0usF
PYTHON - https://bit.ly/3fB2fV6
FRONT-END - https://bit.ly/31rmq2P
WORDPRESS Developer - https://bit.ly/2Dlx8Aa
SALESFORCE Developer - https://bit.ly/2EYPs2q
UI/UX дизайн - https://bit.ly/3iiTyk2
Project management - https://bit.ly/3a1WQW9
Обучение на проекте - https://bit.ly/2CalHL2

Продвинутые курсы для состоявшихся девелоперов:
GRASP and GoF Design patterns - https://bit.ly/3khIGF3
Enterprise patterns - https://bit.ly/30zLq95

Сайт Foxminded: https://bit.ly/3kkOygQ
Foxminded в ФБ: https://www.facebook.com/foxmindedco
FoxmindEd в Instagram: https://www.instagram.com/foxminded.ua/
Foxminded в VK: https://vk.com/foxminded
Мой Telegram: https://t.me/nemchinskiyOnBusiness
Мой блог: www.nemchinsky.me
1. На основе работы Роберта Мартина (дяди Боба). Акроним SOLID предложен Michael Feathers
2. SOLID (сокр. от англ. single responsibility, open-closed, Liskov substitution, interface segregation и dependency inversion)

1. SRP Принцип единственной ответственности (The Single Responsibility Principle) - Каждый класс должен иметь одну и только одну причину для изменений.
2. OCP Принцип открытости/закрытости (The Open Closed Principle) - программные сущности … должны быть открыты для расширения, но закрыты для модификации
3. LSP Принцип подстановки Барбары Лисков (The Liskov Substitution Principle) объекты в программе должны быть заменяемыми на экземпляры их подтипов без изменения правильности выполнения программы
4. ISP Принцип разделения интерфейса (The Interface Segregation Principle) много интерфейсов, специально предназначенных для клиентов, лучше, чем один интерфейс общего назначения
5. DIP Принцип инверсии зависимостей (The Dependency Inversion Principle) Зависимость на Абстракциях. Нет зависимости на что-то конкретное
0:00 – вступление Сергея Немчинского
0:23 – про принципы SOLID
1:12 – формулировка Open-Closed Principle (OCP)
2:50 – почему хорошо следовать принципу открытости-закрытости
3:53 – как соблюдать OCP согласно Бертрану Мейеру
6:20 - как соблюдать OCP согласно Роберту Мартину (полиморфный OCP)
8:25 –про расширение классов через интерфейсы

Видео SOLID принципы: OCP (Открытости/закрытости (Open Closed Principle) канала Sergey Nemchinskiy
Показать
Комментарии отсутствуют
Введите заголовок:

Введите адрес ссылки:

Введите адрес видео с YouTube:

Зарегистрируйтесь или войдите с
Информация о видео
7 августа 2020 г. 12:00:17
00:12:10
Другие видео канала
SOLID: Принцип подстановки Барбары Лисков/ LSP (The Liskov Substitution Principle)SOLID: Принцип подстановки Барбары Лисков/ LSP (The Liskov Substitution Principle)9 вещей, которые я хотел бы знать в начале карьеры в айти9 вещей, которые я хотел бы знать в начале карьеры в айтиПринцип хорошего кода KISS ("keep it simple, stupid", "keep it short and simple")Принцип хорошего кода KISS ("keep it simple, stupid", "keep it short and simple")Что лучше: офис, remote, freelance?Что лучше: офис, remote, freelance?Как найти первую работу в IT? Чек-лист для джуна | КонкурсКак найти первую работу в IT? Чек-лист для джуна | КонкурсКак называть переменные, методы и классы? Чистый код (Clean Code)Как называть переменные, методы и классы? Чистый код (Clean Code)SOLID принципы: SRP (Принцип единственной ответственности,  Single Responsibility Principle)SOLID принципы: SRP (Принцип единственной ответственности, Single Responsibility Principle)SOLID: OCP — Принцип открытости /Закрытости, Open-closed Principle - Изменяй неизменяемоеSOLID: OCP — Принцип открытости /Закрытости, Open-closed Principle - Изменяй неизменяемоеS.O.L.I.D-ый JavaScriptS.O.L.I.D-ый JavaScriptПринципы ООП. 1. ИнкапсуляцияПринципы ООП. 1. ИнкапсуляцияJava Android или Java enterprise?Java Android или Java enterprise?Софтскиллы для разработчиковСофтскиллы для разработчиковЧто такое сервер? Какие они вообще бывают для Java?Что такое сервер? Какие они вообще бывают для Java?Как успешно пройти испытательный срок и не вылететь с первой работы?Как успешно пройти испытательный срок и не вылететь с первой работы?Работа программиста на себя. Возможности, перспективыРабота программиста на себя. Возможности, перспективыКакой язык программирования выбрать в 2021?Какой язык программирования выбрать в 2021?Open Closed principleOpen Closed principleКак программисту быстро релоцироваться за границу?Как программисту быстро релоцироваться за границу?SOLID принципы: ISP (Принцип Разделения Интерфейса (The Interface Segregation Principle)SOLID принципы: ISP (Принцип Разделения Интерфейса (The Interface Segregation Principle)
Яндекс.Метрика