SOLID Principles - What Why and How

Is SOLID a Design Pattern or Something Else?

SOLID is a set of design principles, not a design pattern. The five SOLID principles guide the structure and behavior of object-oriented design to make software more flexible, maintainable, and scalable. They don't provide concrete solutions like patterns do, but instead, they help you write better code by ensuring your classes and systems are well-structured and easier to modify or extend.

The SOLID Principles:

  1. Single Responsibility Principle (SRP):

    • A class should have only one reason to change. In other words, it should have only one job or responsibility.
  2. Open/Closed Principle (OCP):

    • Software entities (classes, modules, functions) should be open for extension but closed for modification. You should be able to add new functionality without changing existing code.
  3. Liskov Substitution Principle (LSP):

    • Objects of a superclass should be replaceable with objects of a subclass without affecting the correctness of the program. A derived class must be able to be used wherever the base class is expected.
  4. Interface Segregation Principle (ISP):

    • Clients should not be forced to depend on methods they do not use. Instead of one large interface, multiple smaller, more specific interfaces are preferable.
  5. Dependency Inversion Principle (DIP):

    • High-level modules should not depend on low-level modules. Both should depend on abstractions. Also, abstractions should not depend on details; details should depend on abstractions.