“Klasy powinny być otwarte na rozszerzanie, ale zamknięte na modyfikacje.” Zasada OCP daje wskazówkę jak tworzyć klasy. Podczas ich tworzenia, trzeba zapewnić im możliwość rozszerzenia w przyszłości. Wprowadzanie zmian do istniejącej klasy jest zawsze ryzykowne, nie wiemy jak zmiany wpłyną na funkcjonowanie pozostałego kodu programu. Zasadę tą w praktyce można wdrożyć wykorzystując np. dziedziczenie, interfejsy, wzorce projektowe.
Przykład programu przed wdrożeniem zasady otwarte/ zamknięte (OCP):
Gdy do aplikacji będzie trzeba w przyszłości dodać kolejny rodzaj płatności, utworzoną w ten sposób klasę ChoicePaymentMethod będzie trzeba zmodyfikować. Lepszym rozwiązaniem zgodnym z metodą OCP jest zastosowanie np. dziedziczenia z klasy abstrakcyjnej i stworzenie dla każdej metody płatności osobną klasę. Rozwiązanie to pozwala na dodawanie kolejnych metod płatności, gdy będzie taka potrzeba.