SOLID principles were introduced by Robert C.Martin (Uncle Bob). - Robert Cecil Martin
What does SOLID stand for?
S – Single Responsibility Principle
A class should have one and only one reason to change, meaning that a class should have only one job
O – Open Closed Principle
Software entities (classes, modules, functions, etc.) should be open for extension but closed for modification.
L – Liskov Substitution Principle
Every subclass or derived class should be substitutable for its base or parent class
I – Interface Segregation Principle
Clients should not be forced to depend upon interfaces that they do not use.
D – Dependency Inversion Principle
Entities must depend on abstractions, not on concretions.
High-level modules should not depend on low-level modules, both should depend on abstractions.
Abstractions should not depend on details. Details should depend on abstractions.