O que é SOLID?
SOLID é um acrônimo para cinco princípios de design de código orientado a objetos que tornam o software mais compreensível, flexível e manutenível.
1. Single Responsibility Principle (SRP)
"Uma classe deve ter apenas uma razão para mudar"
Cada classe deve ter uma única responsabilidade bem definida.
// ❌ Ruim - Múltiplas responsabilidades
public class UserService
{
public void CreateUser(User user) { }
public void SendEmail(string email) { }
public void GenerateReport() { }
}
// ✅ Bom - Responsabilidade única
public class UserService
{
public void CreateUser(User user) { }
}
public class EmailService
{
public void SendEmail(string email) { }
}
public class ReportService
{
public void GenerateReport() { }
}
2. Open/Closed Principle (OCP)
"Aberto para extensão, fechado para modificação"
Você deve poder estender o comportamento de uma classe sem modificá-la.
// ✅ Usando interfaces e polimorfismo
public interface IPaymentProcessor
{
void ProcessPayment(decimal amount);
}
public class CreditCardProcessor : IPaymentProcessor
{
public void ProcessPayment(decimal amount) { }
}
public class PayPalProcessor : IPaymentProcessor
{
public void ProcessPayment(decimal amount) { }
}
3. Liskov Substitution Principle (LSP)
"Objetos de uma subclasse devem poder substituir objetos da superclasse"
4. Interface Segregation Principle (ISP)
"Muitas interfaces específicas são melhores que uma interface geral"
5. Dependency Inversion Principle (DIP)
"Dependa de abstrações, não de implementações concretas"
// ✅ Usando injeção de dependência
public class OrderService
{
private readonly IPaymentProcessor _paymentProcessor;
public OrderService(IPaymentProcessor paymentProcessor)
{
_paymentProcessor = paymentProcessor;
}
}
Benefícios de Aplicar SOLID
- Código mais testável
- Menos bugs
- Fácil manutenção e extensão
- Melhor organização