SOLID (object-oriented design)
A mnemonic acronym introduced by Robert C. Martin in the early 2000s:
- S : Single responsibility principle — “an object should have only a single responsibility.”
- O : Open/closed principle — “software entities should be open for extension, but closed for modification.”
- L : Liskov substitution principle — “objects in a program should be replaceable with instances of their subtypes without altering the correctness of that program.” (see also design by contract )
- I : Interface segregation principle — “many client specific interfaces are better than one general purpose interface.”
- D : Dependency inversion principle — “one should depend upon abstractions, not depend upon concretions.” (e.g. dependency injection )