- Single Responsibility - A class should have only a single responsibility
- Open/ Closed Principle - A class should be open for extension and closed for modification
- Liskov Substitution - Objects should be replaceable with instances of their sub types without altering program correctness
- Interface Segregation - Client should not be forced to depend on interfaces that they don’t use
- Dependency Inversion - Program to an interface not to an implementation
Related Ideas
Good Software Design Practices