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
/
53
017/100| AI Generowanie Obrazów - AI Image Generation| Bubble.io TUTORIAL
2025_01_16 Rozmawiaj!!! Walka I Postępy
016/100| AI Chat Produktywności - Productivity Chatbot AI| Bubble.io TUTORIAL
2025_01_15 Świąteczne Prezenty Walka I Postępy
015/100| AI Trener Personalny - Motivational Coach AI| Bubble.io TUTORIAL
2025_01_14 Metoda Na Cele | Walka I Postępy
014/100| Połączenie przez API - API Connector| Bubble.io TUTORIAL
2025_01_13 Przerwa Świąteczna | Walka I Postępy
013/100| Rejestracja i Logowanie - Sign-Up & Login Page| Bubble.io TUTORIAL
012/100| Proces Tworzenia Oprogramowania - Transforming App Development|Bubble.io TUTORIAL
011/100| Debugowanie - Debugging| Bubble.io TUTORIAL
010/100| Reużywalny Element - Reusable Elements| Bubble.io TUTORIAL
009/100| Listy Tekstów - Lists of Text| Bubble.io TUTORIAL
008/100| Logika: Warunki - Conditional Basics| Bubble.io TUTORIAL
007/100| Edycja w Bazie Danych - Edit Database| Bubble.io TUTORIAL
006/100| Baza Danych - Database| Bubble.io TUTORIAL
Powiadom Osobę w Komentarzu - Notify Person via Comments| Bubble.io TUTORIAL
005/100| Działanie: Akcje i Wydarzenia - Workflows: Events and Actions| Bubble.io TUTORIAL
004/100| Animowany Przycisk - Custom Animated Buttons| Bubble.io TUTORIAL
003/100| Grupy - Group Elements| Bubble.io TUTORIAL
002/100| Teksty - Text Elements| Bubble.io TUTORIAL
001/100| Edytor Aplikacji i Układ Strony - Editor & Layouts| Bubble.io TUTORIAL
Zbuduj TODO Aplikację - To-Do App in 10 Minutes | Bubble.io Budowa Aplikacji
Wysuwający się Panel - Slide-in Panel| Quick Tip
Wykresy Wykorzystania Bubble.io - App Usage Charts | Bubble.io TUTORIAL
Własny Tymczasowy Stan - Learn Custom States in 5 min| Bubble.io Quick Tip
Uważaj przy Usuwaniu Definicji Danych - Data-Deleting Ripple Effect| Bubble.io TUTORIAL
Szablony - Bubble Templates | Bubble.io TUTORIAL
Stwórz Szybko Bazę Danych - Create Database | Bubble.io TUTORIAL
Przycisk Wysyłania E-maila - Click to Email| Bubble.io TUTORIAL
1
/
53