S: Single Responsibility Principle
O: Open / Close (Open for extension i.e using inheritance or composition and Closed for Modification)
L: Liskov Substitution ( substitutability:- You should be able to use a child class in place of its parent class)
I: Interface Segregation(A Class should not depend on methods that it does not need to implement)
D: Dependency Inversion: your class and modules should depend on abstractions(interface) instead of concrete implementations