S
Single Responsibility Principle
A class should have a single responsibility and a single reason to change
O
Open-Closed Principle
Open for extension but closed for modification
L
Liskov Substitution Principle
Objects should be replacable with instances of their subtypes without affecting correctness
I
Interface Segregation Principle
Clients should not be forced to depend on unused interfaces
D
Dependency Inversion Principle
Program to an interface, not to an implementation