# 🔆 Design Patterns
Why do we need design patterns in programming?
# 🔲 Programming Paradigm
- Imeperative
- Declerative
- Object Oriented Paradigm
# 🔵 Repositiry Pattern
Low cohesion b/w Frontend and Backend
We should not have to change frontend if we choose to add/remove 1 or more backend services.
Say we want an app (web, mobile) which works both with internet (using remote service like Firebase) and without internet (local database service like sqlite3)
DIP
seems similar to Dependency Inversion Principle from SOLID
Useful when requirnment changes, now we need 4 databases! With Repositiry pattern it will easily scale due to low cohesion b/w frotend and backend and high coupling at backend A --> B
How to implement Repository Pattern in Python?
# ⛪️ Facade Pattern wiki
Principle of Least Knowledge
Analogous to a facade in architecture, a facade is an object that serves as a front-facing interface masking more complex underlying or structural code.
- High coupling is bad when we have to change things.
- Law of demeter
# 🔬 Programming Methodologies
# GRASP
General Responsibility Assignment Software Patterns
guidelines for assigning responsibility to classes and objects