SOLID Principles

SOLID is a set of design heuristics. Single Responsibility encourages cohesive responsibilities. Open/Closed encourages extension without repeatedly modifying stable behavior. Liskov Substitution focuses on substitutability. Interface Segregation avoids irrelevant dependencies. Dependency Inversion encourages high-level policy to depend on abstractions.

interface NotificationSender {
    void send(String recipient, String message);
}

final class OrderService {
    private final NotificationSender sender;

    OrderService(NotificationSender sender) {
        this.sender = sender;
    }
}

The value is reduced coupling and easier testing, not creating an interface for every class.

Key Takeaways
  • SOLID is about managing change and coupling.
  • Dependency inversion improves testability and architectural boundaries.
  • Do not introduce abstractions without a meaningful reason.