Skip to content

srp.md — abdush — kahramonov.dev

abdush › notes › solid › srp.md

notes / solid / srp.md · 2026-03 · 1 min

# Single Responsibility Principle

🔗 View on GitHub

### A class should have only one responsibility.

This means that a class should have only one reason to change. If a class has multiple responsibilities, it becomes harder to maintain, understand, and modify without introducing bugs.


## 🍽️ Imagine a restaurant:

### ❌ Bad Design

One employee does everything:

  • Cooks food
  • Serves customers
  • Handles payments

👉 This creates confusion, overload, and mistakes


### ✅ Good Design with Single Responsibility Principle

Each employee has a specific role:

  • 👨‍🍳 Chef → cooks food
  • 🧑‍💼 Waiter → serves customers
  • 💵 Cashier → handles payments
##### Each person does one job well!
##### No overlapping responsibilities!

## 🧑‍💻 In software:

### ❌ Bad Design

class RestaurantService {
    void cookFood() {
        System.out.println("Cooking...");
    }

    void serveCustomer() {
        System.out.println("Serving...");
    }

    void processPayment() {
        System.out.println("Processing payment...");
    }
}

A single class is responsible for multiple tasks, making it harder to maintain and change.


### ✅ Good Design with Single Responsibility Principle

class Chef {
    void cookFood() {
        System.out.println("Cooking...");
    }
}

class Waiter {
    void serveCustomer() {
        System.out.println("Serving...");
    }
}

class Cashier {
    void processPayment() {
        System.out.println("Processing payment...");
    }
}

Now each class has only one responsibility, making the system easier to understand, maintain, and extend.