What is the Single Responsibility Principle (SRP)?
SRP means a class or module should have only one reason to change. It should do one job only.
Click to reveal answer
beginner
Why is SRP important in system design?
It makes code easier to understand, test, and maintain. Changes in one part don't affect others.
Click to reveal answer
beginner
Give a real-life example of SRP.
A car's steering system only controls direction. It doesn't handle engine or brakes. Each part has one job.
Click to reveal answer
intermediate
What can happen if SRP is ignored?
Classes become complex and hard to fix. One change may break many things, causing bugs.
Click to reveal answer
intermediate
How does SRP relate to maintainability?
With SRP, each part is simple and focused. This makes fixing and updating easier and safer.
Click to reveal answer
What does the Single Responsibility Principle state?
AA class should be as large as possible
BA class should handle multiple responsibilities
CA class should have only one reason to change
DA class should never change
✗ Incorrect
SRP means each class or module should have only one reason to change.
Which is a benefit of following SRP?
ACode is easier to maintain
BChanges in one part affect many others
CCode becomes harder to test
DClasses become more complex
✗ Incorrect
SRP makes code easier to maintain by keeping responsibilities separate.
Ignoring SRP can lead to:
ASimpler code
BMore bugs and complex classes
CFaster development always
DNo impact on design
✗ Incorrect
Ignoring SRP often causes complex classes and more bugs.
Which example best follows SRP?
AA class that manages user login and payment processing
BA class that changes for many reasons
CA class that does everything in the system
DA class that only handles user authentication
✗ Incorrect
A class handling only user authentication follows SRP.
SRP helps in:
AImproving code maintainability
BReducing code readability
CMaking classes do many jobs
DIncreasing coupling
✗ Incorrect
SRP improves maintainability by keeping code focused.
Explain the Single Responsibility Principle and why it matters in system design.
Think about how one class should do only one job.
You got /3 concepts.
Describe a real-life analogy that helps understand SRP.
Consider parts of a car or kitchen tools.
You got /2 concepts.
Practice
(1/5)
1. What does the Single Responsibility Principle (SRP) mean in simple terms?
easy
A. A class should handle multiple tasks to reduce the number of classes.
B. Each class or module should have only one job or responsibility.
C. All functions should be written in a single class for simplicity.
D. Classes should share responsibilities to improve collaboration.
Solution
Step 1: Understand the principle's core idea
The Single Responsibility Principle states that a class or module should have one and only one reason to change, meaning it should do one job.
Step 2: Match the explanation to the options
Each class or module should have only one job or responsibility. clearly states that each class or module should have only one job, which matches the principle.
Final Answer:
Each class or module should have only one job or responsibility. -> Option B
Quick Check:
Single Responsibility Principle = One job per class [OK]
Hint: One class, one job keeps code clean and simple [OK]
Common Mistakes:
Thinking one class should do many tasks
Believing all code should be in one place
Confusing SRP with code reuse
2. Which of the following class names best follows the Single Responsibility Principle?
easy
A. UserAuthenticator
B. DataProcessorAndReportGenerator
C. UserManagerAndLogger
D. FileHandlerAndNetworkSender
Solution
Step 1: Analyze class names for single responsibility
Classes with multiple responsibilities in their names violate SRP. UserManagerAndLogger, DataProcessorAndReportGenerator, and FileHandlerAndNetworkSender suggest multiple jobs.
Step 2: Identify the class with one clear responsibility
UserAuthenticator clearly focuses on one task: authenticating users, which aligns with SRP.
Final Answer:
UserAuthenticator -> Option A
Quick Check:
Class name with one job = UserAuthenticator [OK]
Hint: Class name shows one clear job means SRP followed [OK]
Common Mistakes:
Choosing classes with multiple jobs in name
Ignoring SRP and mixing responsibilities
Assuming longer names are better
3. Given this Python class, what is the main SRP violation?
A. The class handles order validation, saving, and email sending, mixing responsibilities.
B. The class does not validate the order properly.
C. The class should not have any methods.
D. The class only processes orders and follows SRP.
Solution
Step 1: Identify responsibilities in the class
The class OrderProcessor validates orders, saves orders, and sends confirmation emails. These are three distinct jobs.
Step 2: Check SRP compliance
SRP requires one responsibility per class. Mixing validation, saving, and emailing violates SRP.
Final Answer:
The class handles order validation, saving, and email sending, mixing responsibilities. -> Option A
Quick Check:
Multiple jobs in one class = SRP violation [OK]
Hint: One class, one job; multiple jobs mean SRP broken [OK]
Common Mistakes:
Ignoring multiple responsibilities in one class
Thinking multiple methods mean multiple classes
Assuming SRP allows all related tasks in one class
4. You have a class that both calculates taxes and generates invoices. What is the best way to fix this SRP violation?
medium
A. Combine tax calculation and invoice generation into a single method.
B. Add more methods to handle discounts and payments in the same class.
C. Split the class into two: one for tax calculation and one for invoice generation.
D. Remove tax calculation and keep only invoice generation.
Solution
Step 1: Identify the problem with the current class
The class does two jobs: calculating taxes and generating invoices, which breaks SRP.
Step 2: Apply SRP by separating responsibilities
Splitting into two classes, each with one responsibility, fixes the violation and improves maintainability.
Final Answer:
Split the class into two: one for tax calculation and one for invoice generation. -> Option C
Quick Check:
Separate classes for separate jobs = SRP fix [OK]
Hint: Split mixed jobs into separate classes to follow SRP [OK]
Common Mistakes:
Adding unrelated methods to the same class
Combining jobs into one method
Removing needed functionality instead of splitting
5. You are designing a system for a library. Which design best follows the Single Responsibility Principle?
hard
A. A single class 'LibrarySystem' that manages books, users, loans, and notifications.
B. A single class 'Library' that handles everything including maintenance and reporting.
C. One class 'LibraryManager' that handles books and users, and another class 'LoanAndNotificationManager' for loans and alerts.
D. Separate classes: 'BookManager' for books, 'UserManager' for users, 'LoanManager' for loans, and 'NotificationService' for alerts.
Solution
Step 1: Analyze each design for responsibility separation
Designs with a single class handling books, users, loans, and notifications, or a single class handling everything, put many jobs into one class, violating SRP. Designs with one class for books and users, and another for loans and notifications, mix multiple jobs in each class.
Step 2: Identify the design with clear single responsibilities
Separate classes: 'BookManager' for books, 'UserManager' for users, 'LoanManager' for loans, and 'NotificationService' for alerts. separates concerns into distinct classes, each with one responsibility, following SRP best.
Final Answer:
Separate classes: 'BookManager' for books, 'UserManager' for users, 'LoanManager' for loans, and 'NotificationService' for alerts. -> Option D
Quick Check:
Separate classes for separate jobs = SRP followed [OK]
Hint: One class per job in system design follows SRP best [OK]
Common Mistakes:
Grouping unrelated responsibilities in one class
Mixing multiple jobs in fewer classes
Ignoring SRP for convenience
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.