- In the Single Responsibility Principle (SRP), each class should be responsible for a single part or functionality of the system.
- In the Open Closed principle (OCP), software components should be open for extension but closed for modification.
- In the Liskov Substitution Principle (LSP), objects of a superclass should be replaceable with objects of its subclasses without breaking the system.
- The Interface Segregation Principle (ISP) makes fine-grained interfaces that are client specific.
- The Dependency Inversion Principle (DIP), ensures that the high-level modules are not dependent on low-level modules. In other words, one should depend upon abstraction and not concretion.