Single Responsability Principle

Open-Close Principle

Liskov Substitution Principle

Dependency Inversion Principle