design pattern
- Single-responsibility principle (SRP)
- The open–closed principle (OSP)
- The Liskov substitution principle (LSP)
- The interface segregation principle (ISP)
- The dependency inversion principle: "Depend upon abstractions, [not] concretions." (DIP)