S.O.L.I.D are five Object Oriented Principles that we should follow when design the Application.

1.Single responsibility

2.Open close

3.Liskov substitution

4.Interface segregation

5.Dependency inversion

Single responsibility Principe

A class should have only one object.(There should be only one reason to change the class)

Open close Principle

Objects or entities should be open for extension, but closed for modification.It tells you to write your code so that you will be able to add new functionality without changing the existing code.

Liskov substitution Principal

The Liskov Substitution principle was introduced by Barbara Liskov in her conference keynote “Data abstraction” in 1987. The definition is "Every subclass class should be able to substitute their parent class".

Interface segregation principal

Clients should not be forced to implement methods they do not use. Similar to the Single Responsibility Principle, the goal of the Interface Segregation Principle is to reduce the side effects and frequency of required changes by splitting the software into multiple, independent parts.

Dependency inversion Principal

Higher level modules should not depend on lower level modules, but they should
depend on abstractions. The general idea of this principle is High-level modules, which provide complex logic, should be easily reusable and unaffected by changes in low-level modules, which provide utility features. To achieve that, you need to introduce an abstraction that decouples the high-level and low-level modules from each other.