- S - Single-responsiblity principle
Every module, class or function in a computer program should have responsibility over a single part of that program’s functionality, which it should encapsulate. All of that module, class or function’s services should be narrowly aligned with that responsibility.
- O - Open-closed principle
Software entities (classes, modules, functions, etc.) should be open for extension, but closed for modification
- L - Liskov substitution principle
Sis a subtype of
T, then objects of type
Tmay be replaced with objects of type
S(i.e. an object of type
Tmay be substituted with any object of a subtype
S) without altering any of the desirable properties of the program.
- I - Interface segregation principle
Clients should not be forced to depend upon interfaces that they do not use.
- D - Dependency Inversion Principle
High level modules should not depend upon low-level modules. Both should depend upon abstractions.