Spis treści
Open/closed principle
All classes should be open for enlargement and closed for modifications.
This principle is about two things:
- Open — Elements should be created in a way to be easily expanded. Changes in their behavior should not require modification of the current code but added a new one.
- Closed — Behavior modification should not be connected with changes in existing code.
This rule we can use in methods, functions, classes, modules and packages. To apply this principle, we can use Single responsibility Principle and Dependency inversion principle.
Advantages
- Greater flexibility.
- Greater code reuse.
- Easier maintenance.
- Easier application improvement.
- Backward compatibility.
Disadvantages
- Greater difficulty and labor consumption during software development.
Example
- Calculator, which counts figures area. It iterates figures. Every figure implements IFigure interface. This calculator call on every figure the method GetArea(), instead of has a switch and calculate in Calculator every area.
- Report generators create different reports. Report generators implement IReportGenerates. We can put this report generators in clients depend on client specifications (for instance they want Pdf, Html).
All posts from mini project: Learn SOLID and OOP principles:
- SOLID
- SOLID exercises
- S like Single responsibility principle
- SOLID exercises — Kata
- O as Open-closed principle
- L jak Liskov Substitution Principle
- Interface segregation principle
- KISS — Keep it simple, stupid
- DRY — Don’t repeat yourself
- Dependency inversion principle
- SLAP — Single Level of Abstraction Principle
- Composition Over Inheritance
- Encapsulate what changes
- Lod — Law of Demeter
- ES as Exercises of Single responsibility principle
- EO as Exercises of Open/closed principle
- EL as Exercises of Liskov Substitution Principle
- EI as Eexrcises of Interface segregation principle
- ES as Exercises of Dependency Inversion Principle
- Object-oriented programming
- OOP — Object-Oriented Programming — Advice
- OOP — Object Oriented Programming
Sources
Main image
Materials
- Clean architecture — Robert C. Martin
- https://sii.pl/blog/solid-dobre-praktyki-programowania/
- https://javadeveloper.pl/solid/
- http://butunclebob.com/ArticleS.UncleBob.PrinciplesOfOod
- https://www.p-programowanie.pl/paradygmaty-programowania/zasady-solid/
- https://www.samouczekprogramisty.pl/solid-czyli-dobre-praktyki-w-programowaniu-obiektowym/
- https://pl.wikipedia.org/wiki/Zasada_otwarte-zamkni%C4%99te
- https://en.wikipedia.org/wiki/Open%E2%80%93closed_principle
- The Open-Closed Principle – Robert C. Martin – https://drive.google.com/file/d/0BwhCYaYDn8EgN2M5MTkwM2EtNWFkZC00ZTI3LWFjZTUtNTFhZGZiYmUzODc1/view
1
/
48
Zrób Paginację (stronnicowanie) - Pagination| Bubble.io TUTORIAL
Zrób Aplikację w 10 minut - App in 10 Minutes| Bubble.io TUTORIAL
Wyszukiwanie i Podpowiadanie - Search & Autocorrect Plugin| Bubble.io TUTORIAL
Używaj Custom Eventów jak Profesjonalista - Custom Events| Bubble.io Quick Tip
Podstawowe działania | Bubble.io TUTORIAL
Zarządzanie zapasami - Inventory Tracker|Bubble.io TUTORIAL BUDOWA APLIKACJI
Zmiana Wyświetlanego Pola w Bazie - Change Primary Field| Bubble.io Quick Tip
Uruchom jako Użytkownik - Run as User | Bubble.io Quick Tip
Automatyczna Łączenie Pola z Kontrolką - Auto-Binding| Bubble.io TUTORIAL
Wykresy w Twojej aplikacji - Add a Chart| Bubble.io TUTORIAL
Szybkie połączenie z ChatGPT - ChatGPT App| Bubble.io TUTORIALSztuczna Inteligencja
Własny ChatGPT - Custom GPT App| Bubble.io TUTORIAL
Zbuduj AI Czat - built ChatGPT App| Bubble.io TUTORIAL
Odwróć Listę - Reverse Chat List| Bubble.io TUTORIAL
Menu w Postaci Rozwijanej Listy - Build a Dropdown Menu| Bubble.io TUTORIAL
Reużywalne Elementy - Reuse Components| Bubble.io TUTORIAL
Wiele Ról Użytkownika - Create Multiple User Roles| Bubble.io TUTORIAL
Diagramy i Wykresy - Diagrams and Charts | Bubble.io TUTORIAL
Dodaj Kategorie i Podkategorie - Adding Categories & Subcategorie| Bubble.io TUTORIAL
Karol Bocian Bubble.io Budowa Aplikacji
Skopiuj Tekst do Schowka - Copy Text to Clipboard| Bubble.io TUTORIAL
Pokaz Zdjęć - Slideshow with a Repeating Group | Bubble.io TUTORIAL
Tworzenie Odliczania - Countdown| Bubble.io TUTORIAL
Slajdy w Powtarzającej Grupie - Slideshow Using Repeating Groups| Bubble.io TUTORIAL
Ułatw Sobie Projektowanie Aplikacji - Make Designing Easier| Bubble.io TUTORIAL
Pokaż Pobliskie Lokalizacje - Filter Locations By Current Location| Bubble.io TUTORIAL
Tłumaczenie w Aplikacji - Add Translation| Bubble.io TUTORIAL
Wgraj Plik Video - Upload Videos Directly| Bubble.io TUTORIAL
Data API - Udostępnij API Bazy Danych - How to Use the Data API Endpoint| Bubble.io TUTORIAL
Zbuduj Nawigację| Bubble.io TUTORIAL
1
/
48