SOLID is a set of five principles for programming that we can apply it to just about any language especially any object-oriented language.
- Single Responsibility Principle (SRP): A class should only have a single responsibility, ie, only changes to one part of the software’s specification should be able to affect the specification of the class
- Open/Closed Principle: Software entities should be open for extension but closed for modification
- Liskov’s Substitution Principle (LSP): Objects in a program should be replaceable with instances of their subtypes without altering the correctness of the program
- Interface Segregation Principle (ISP): Many client-specific interfaces are better than one general-purpose interface
- Dependency Inversion Principle (DIP): One should depend on abstractions, not concretions
![Screenshot 2023-07-27 at 2 22 36 AM](https://private-user-images.githubusercontent.com/40483229/256361333-808d8cf7-8fbe-45ac-8bc1-9346f5b4f11f.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjE5Mzk0ODYsIm5iZiI6MTcyMTkzOTE4NiwicGF0aCI6Ii80MDQ4MzIyOS8yNTYzNjEzMzMtODA4ZDhjZjctOGZiZS00NWFjLThiYzEtOTM0NmY1YjRmMTFmLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA3MjUlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNzI1VDIwMjYyNlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTQ2YzEwN2VkNGE5ZjJhMzE3OTlhNTE2NzUzZjU2YmE3MjM1ZTQ4ODU1NjY2ZDJkYTA2YjJiNTIzZmQ0Y2I1Y2YmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.0GtAVc-II9G5TA_hOg8k77dH4I8ykA_qCorzjLB-tD4)