Mid SOLID

Can you give an example of refactoring code to follow SRP?

Before (SRP Violation):

public class Invoice

public void GenerateInvoice() { /* logic */ }

public void SaveToDatabase() { /* logic */ }

public void SendEmail() { /* logic */ }

This class has 3 responsibilities: generating, saving, and emailing.

After (SRP-compliant):

public class InvoiceGenerator

public void Generate() { /* logic */ }

public class InvoiceRepository

public void Save(Invoice invoice) { /* logic */ }

public class EmailService

public void Send(Invoice invoice) { /* logic */ }

Now each class has a single reason to change.

More from Design Patterns in C#

All questions for this course