“S” in SOLID principles stands for Single Responsibility Principle (sometimes referred to as the SRP). This principle states that a class should be responsible for only one thing. Sometimes the alternative denition is used: that a class should have no more than one reason to change.

“O” in SOLID principles stands for Open-Closed Principle (sometimes referred to as the OCP). This principle states that modules, classes, and functions should be opened for extension, but closed for modication.

“L” in SOLID principles stands for Liskov Substitution Principle. This principle states that we should be able to use a derived type in place of a base without knowing it, and it should not lead to any unexpected results.

“I” in SOLID principles stands for the Interface Segregation Principle (sometimes referred to as the ISP). This principle states that the clients of an interface should not be forced to depend on methods they don’t use.

“D” in SOLID principles stands for the Dependency Inversion Principle. This principle states that high-level modules should not depend on low-level modules. Both should depend on abstractions.