Quiz 2
Registry Synced

🏗️ SOLID Principles

249 words
1 min read

Reading compass

Now · 1. 🎯 Learning Objectives

🏗️ SOLID Principles

1. 🎯 Learning Objectives

  • Apply each SOLID principle with code examples
  • Refactor code violating SOLID principles
  • Explain why SOLID leads to maintainable code

2. 📖 Core Content

3.1 Single Responsibility (SRP)

"A class should have only one reason to change." Violation: A Report class that generates data AND formats output AND saves to file. Fix: Separate into DataFetcher, ReportFormatter, ReportSaver.

3.2 Open-Closed (OCP)

"Open for extension, closed for modification." Violation: Adding a new shape type requires modifying the area calculator. Fix: Use polymorphism — each shape implements getArea().

3.3 Liskov Substitution (LSP)

"Subtypes must be substitutable for their base types." Violation: A Square extending Rectangle where setWidth() affects height. Fix: Don't inherit Square from Rectangle. Use a common Shape interface.

3.4 Interface Segregation (ISP)

"Clients should not be forced to depend on interfaces they don't use." Violation: A Worker interface with work(), eat(), sleep() methods. Robot class forced to implement eat(). Fix: Split into Workable, Eatable, Sleepable interfaces.

3.5 Dependency Inversion (DIP)

"Depend on abstractions, not concretions." Violation: A class directly instantiating its dependencies. Fix: Use dependency injection — pass dependencies through constructor.

4. 📝 Practice Questions

Q1: A class that handles database operations AND sends emails. Which SOLID principle is violated?
Answer: Single Responsibility Principle (SRP). Database operations and email sending are separate concerns that should change independently. Split into DatabaseHandler and EmailService classes. Join Discord PreviousAgile & ScrumNextDesign Patterns
Document outline

Keep your place and jump directly to a heading.

Table of Contents
System Normal // Awaiting Context

Intelligence Hub

Navigate the knowledge graph to generate context. The Hub adapts dynamically to surface backlinks, related notes, and metadata insights.