Encapsulate what may change
Hide changing code under abstraction.
Examples:
Tickets: We can hide condition like is the ticket valid in a separate method.
Animals: Animals (Cat, Dog) have a voice. We have a class AnimalConcert. It calls all animal voices. In this method, AnimalsConcert iterate through all animals, check their type and give a voice for it.
We can add an interface IAnimal with method GetVoice. All animals can implement it. The implementation of giving voice is moved from AnimalsConcert to Dog and Cat. Now, AnimalsConcert iterates through all animals and call their method GetVoice. Now, when we add a new animal, we should only add a class with this new animal. We shouldn’t change AnimalConcert implementation.
Advantages
- Less code to modify when making changes.
- Clients depend on abstraction, not on low-level details (the Dependency Inversion Principle).
- Easier maintenance.
- Easier testing
Disadvantages
- More abstractions.
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
- https://devcave.pl/notatnik-juniora/zasady-projektowania-kodu
- https://medium.com/@iamprabal/encapsulation-4f5392d172a3
- https://pl.cs.jhu.edu/oose/lectures/design-principles.shtml
1
/
51
2024_12_04 Formalizm opóźnia
Aplikacja Wielojęzyczna - Multilingual App| Bubble.io TUTORIAL
2024_12_03 Oczekiwania i Zarost | Walka I Postępy
Prosty Sposób na Przełącznik - Toggle Between YES/NO| Bubble.io Quick Tip
Własne Szerokości Ekranu - Custom Responsive Breakpoints| Bubble.io Quick TipPluginy:
2024_12_02 Casting na klienta | Walka I Postępy
Animacja Ładowania Strony - Page Loading Animation| Bubble.io Quick Tip
Przestrzenie w Powtarzającej Grupie - Space in Repeating Group| Bubble.io Quick Tip
2024_11_29 Nieprzyjemny kontrahent | Walka I Postępy
Podziel Długi Tekst Na Paragrafy - Separate Paragraphs| Bubble.io Quick Tip
Pływająca Grupa - Sticky Groups| Bubble.io TUTORIAL
2024_11_28 Strzelnica i Wspaniała Obsługa | Walka I Postępy
2024_11_27 Priorytety NFZ | Walka I Postępy
Rozwijane FAQ - Accordion Menu FAQ| Bubble.io TUTORIAL
Debuger - Turn Off Debugger| Bubble.io Quick Tip
2024_11_26 Co robić, aby być potrzebnym? | Walka I Postępy
2024_11_25 Jak zmniejszyć liczbę zgłoszeń? | Walka I Postępy
Zorganizuj Lepiej Swoją Aplikację - Organize Your Bubble App| Bubble.io Quick Tip
Dlaczego Używam Bubble.io? | Bubble.io Quick Tip
2024_11_22 Złośliwość Rzeczy Martwych | Walka I Postępy
Własne Wydarzenie Zwraca Wartość - Custom Event - Return Value| Bubble.io TUTORIAL
Animacja Ładowania z Lottie - Loading Animation with Lottie| Bubble.io TUTORIAL
2024_11_21 Przekraczanie Budżetu | Walka I Postępy
2024_11_20 Otwieranie Spółki jest Szybkie | Walka I Postępy
Wiele Widoków Na Jednej Stronie - Multi Screen Navigation on Single Page Bubble.io TUTORIAL
2024_11_19 Przewiduj Swoje Oczekiwania | Walka I Postępy
Połącz Bazę Danych z Wyświetlaniem Listy - Connect Repeating Group with Database Bubble.io Quick Tip
2024_11_18 Obsługa Klienta... | Walka I Postępy
Pobierz Zdjęcia będące w base64 - Save base64 Image| Bubble.io Quick Tip
Wyślij Dane Do Popupa z Powtarzającej Grupy - Send to Popup from RG Bubble.io TUTORIAL
1
/
51