Ви порушуєте цей принцип якщо ви безпосередньо працюєте з конкретною реалізацією замість абстракції. Порушення стає очевидним, коли потрібно розширити існуючий код, щоб включити нові функції. 16 квітня 2018 р.
Принцип «відкрито-закрито» спонукає розробників програмного забезпечення зосереджуватися на тому, що необхідно, коли приходить час додавати нові функції. Якщо ви хочете додати нову функціональність до наявного коду, і вам потрібно змінити його, перш ніж додати нову функціональність, то ви не дотримуєтеся принципу відкрито-закрито.
Приклад порушення принципу «відкрито-закрито». Клас PaymentProcessor має метод processPayment(), який приймає платіжний об’єкт як аргумент і обробляє платіж. Ця реалізація порушує принцип відкритості закритості, оскільки для додавання нового типу платежу потрібно змінити існуючий код.
Реальний приклад принципу «відкрито-закрито». Електричний адаптер є хорошим прикладом цього принципу. Перехідник у стіні завжди закритий для модифікації, іншими словами, ми не можемо змінити його після того, як він встановлений або подовжений, якщо ми хочемо більше.
Об’єкти або сутності мають бути відкритими для розширення, але закритими для модифікації. Це означає, що сутність має бути розширюваною без зміни самої сутності. Ознакою номер один порушення OCP є використання операторів if-else або switch.
Загалом шаблон проектування Builder може бути корисним інструментом для створення складних об’єктів із багатьма атрибутами, особливо коли вам потрібно створити різні представлення того самого об’єкта або застосувати принципи проектування, такі як SRP та OCP.