Single-responsibility principle
Open–closed principle
Option 1.
Option 2.
Liskov substitution principle
Interface segregation principle
Dependency inversion principle