- Single Responsibility Principle
- Open/Closed Principle: Open for extension, but closed for modification.
- Liskov Substitution Principle: This is the foundation where interface and inheritance can work.
- Interface Segregation Principle
- Dependency Inversion Principle