Single Responsibility Principle : It is defined as,A class should have one, and only one, reason to change.
Open-Closed Principle: Software entities (classes, modules, functions, etc…) should be open for extension, but closed for modification Liskov Substitution Principle. — Child classes should never break the parent class’ type definitions.
Liskov Substitution Principle : Child classes should never break the parent class’ type definitions.
Interface Segregation Principle : The interface-segregation principle (ISP) states that no client should be forced to depend on methods it does not use.
Dependency Inversion Principle : High-level modules should not depend on low-level modules. Both should depend on abstractions.Also Abstractions should not depend upon details. Details should depend upon abstractions.