Single Responsibility Principle
The single responsibility principle states that a class, module, or function should have only one reason to change, meaning it should do one thing.
The Open Close Principle
The open-closed principle states that classes, modules, and functions should be open for extension but closed for modification.
The Liskov Substitution Principle
The principle states that child classes or subclasses must be substitutable for their parent classes or super classes. In other words, the child class must be able to replace the parent class. This has the advantage of letting you know what to expect from your code.
The Interface Segregation Principle
The interface segregation principle states that clients should not be forced to implement interfaces or methods they do not use.
The Dependency Inversion Principle
The dependency inversion principle is about decoupling software modules. That is, making them as separate from one another as possible.