SOLID Design Principles

The foundation of maintainable and scalable object-oriented software.

S - Single Responsibility Principle

A class should have one, and only one, reason to change.

O - Open/Closed Principle

Software entities should be open for extension, but closed for modification.

L - Liskov Substitution Principle

Objects in a program should be replaceable with instances of their subtypes without altering the correctness of that program.

I - Interface Segregation Principle

Many client-specific interfaces are better than one general-purpose interface.

D - Dependency Inversion Principle

Depend upon abstractions, [not] concretions.