The SOLID principles are a set of guidelines for writing high-quality, maintainable, and scalable software. They were introduced by Robert C. Martin in his 2000 paper “Design Principles and Design Patterns” to help developers write software that is easy to understand, modify, and extend.
A class should have only one reason to change, meaning that a class should have only one job.
Software entities should be open for extension, but closed for modification.
Objects of a superclass should be replaceable with objects of its subclasses without breaking the application
No code should be forced to depend on methods it does not use
High-level modules should not depend on low-level modules, but rather both should depend on abstractions