OCP mówi o tym, że klasy, moduły bądź funkcje powinny być otwarte na rozbudowę, rozszerzanie, a zamknięte na modyfikacje. Zasada ta wymusza stosowanie abstrakcji, ponieważ w programie powinna być wydzielona część wspólna i specyficzna. Część wspólna powinna być zamknięta w interfejsie lub klasie abstrakcyjnej, zaś część specyficzna powinna znajdować się w konkretnej klasie, która implementuje dany interfejs lub dziedziczy daną klasę abstrakcyjną. Zły kod przedstawia jedną klasę Figure, gdzie znajduje się jedna metoda liczącą obwód kwadratu i prostokąta. Jeżeli chcielibyśmy rozszerzyć implementację o następną figurę to potrzebna jest modyfikacja całej metody. W dobrym kodzie został wydzielony interfejs Figure, który implementują poszczególne figury. Dzięki takiemu rozwiązaniu łatwo jest dodać kolejne klasy figur z zachowaniem niezmienionego interfejsu.
ZŁY KOD

DOBRY KOD



