- Single responsibility principle (SPR)
- Open-closed principle (OCP)
- Liskov substitution principle (LSP)
- Interface segregation principle (ISP)
- Dependency inversion principle (DIP)
A class should have only one reason to change.
Robert C. Martin
Software entities should be open for extension, but closed for modification
Bertrand Meyer
Let Φ(x) be a property provable about objects x of type T. Then Φ(y) should be true for objects y of type S where S is a subtype of T.
Barbara Liskov
No client should be forced to depend on methods it does not use.
Robert C. Martin
A. High-level modules should not depend on low-level modules. Both should depend on abstractions.
B. Abstractions should not depend on details. Details should depend on abstractions.
Robert C. Martin