O jak Open-closed principle, czyli zasada otwarte/zamknięte

przez | 7 lutego, 2020

Open-closed principle — Zasada otwarte/zamknięte

Każdy składnik oprogramowania powinien być otwarty na rozszerzenia i zamknięty na modyfikacje.

Dotyka ona dwóch zagadnień:

  1. Zagadnienie otwarte — Składniki powinny być stworzone w sposób umożliwiający łatwe rozszerzenie ich zachowania. Zmiana ich zachowania nie wymaga zmiany istniejącego kodu, lecz dopisanie nowego.
  2. Zagadnienie zamknięte — Modyfikacja zachowania nie powinna wiązać się ze zmianą już istniejącego kodu.

Regułę tę można stosować do metod, funkcji, klas, modułów oraz pakietów. Do jej stosowania wykorzystuje się zasadę Pojedynczej odpowiedzialności oraz regułę odwróconych zależności.

Zalety

  • Większa elastyczność.
  • Ponowne wykorzystywanie kodu.
  • Łatwiejsze utrzymanie oprogramowania.
  • Łatwiejsza rozbudowa systemu.
  • Zapewnianie wstecznej kompatybilności.

Wady

  • Duża trudność i pracochłonność podczas tworzenia oprogramowania.

Przykład

  • Kalkulator liczący powierzchnię figur iteruje po liście obiektów implementujących interfejs IFigure, zamiast korzystania z switcha rozróżniającego po typie każdą klasę.
  • Generatory raportów generujący raport implementujący interfejs IReportGenerator, którego można wstrzykiwać w klientów w zależności, jaki raport chcą (Pdf, Html).

Wszystkie posty związane z mini projektem: Poznaj zasady SOLID i OOP:

Źródła

Obraz główny

Materiały

Kategoria: IT Projekt Poznaj zasady SOLID i OOP Tagi: , , ,

O Karol Bocian

Programowanie i świat agentów programowalnych, który poznał na Wydziale Matematyki i Nauk Informacyjnych, wciągnął go w przemysł IT. W trakcie swojej praktyki zawodowej Karol zrozumiał, że nie ważne co się robi i kim się jest, ale wiedza z zarządzania przydaje się wszędzie. Rozpoczął studia na kierunku Zarządzanie i Inżyniera Produkcji. W przypadku Karola zarządzanie to nie tylko teoria czy praca, ale prawie każdy element jego życia, to jego pasja.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *