SOLID is an acronym which stands for
- Single responsibility principle – every software entity (object, module etc) should have only a single responsibility and one reason to change.
- Open/closed principle – every software entity should be open for extension, but closed for modification.
- Liskov substitution principle – closely related to design by contract and it means that objects in a program should be replaceable with instances of their subtypes without altering the correctness of that program.
- Interface segregation principle – many client specific interfaces are better than one general purpose interface, i.e. that a client should not depend on methods they don’t use.
- Dependency inversion principle – a software entity should depend upon abstractions and not depend on details.