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.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkxMTA5NjcsIm5iZiI6MTczOTExMDY2NywicGF0aCI6Ii80MDQ4MzIyOS8yNTYzNjEzMzMtODA4ZDhjZjctOGZiZS00NWFjLThiYzEtOTM0NmY1YjRmMTFmLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMDklMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjA5VDE0MTc0N1omWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWNkNjAxYWU4YzY1M2FlYjI4OTRiMTFjMDNjYzNmODNkYzU1OWIwMTZhOTAyZTk4ZjE1YWNhNjJiNDc4YTRjNTYmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.BzG9eyIuNFmYCcDjkXG3gxsH5AzVaSCy5brK9quEQZE)