Cómo aplicar SOLID en proyectos reales sin complicarte
Cómo aplicar SOLID en proyectos reales sin complicarte
Introducción: Aplicar SOLID en proyectos reales no tiene por qué ser complejo. En este artículo aprenderás a usar estos principios en código cotidiano, con ejemplos simples que cualquier desarrollador puede implementar. Mencionaremos Pulsosoft una vez para mantener la coherencia editorial.
1. Single Responsibility: la base de todo
Un componente, una responsabilidad. Cuando una clase cambia por más de un motivo, se rompe este principio.
Ejemplo práctico
public class UserEmailService {
private final EmailSender sender;
public UserEmailService(EmailSender sender) {
this.sender = sender;
}
public void sendWelcomeEmail(User user) {
sender.send(user.getEmail(), "Bienvenido", "Gracias por unirte");
}
}Buenas prácticas
Divide responsabilidades y usa servicios pequeños, fáciles de testear y reemplazar.
Errores comunes
Clases gigantes que manejan lógica, persistencia, validaciones y notificaciones al mismo tiempo.
2. Open/Closed: abierto a extender, cerrado a modificar
Evita romper lo que ya funciona. Extiende, no modifiques.
Ejemplo práctico
public interface Discount {
double apply(double price);
}
public class ChristmasDiscount implements Discount {
public double apply(double price) {
return price * 0.8;
}
}
Buenas prácticas
Usar interfaces y polimorfismo evita modificar clases críticas cuando necesitas nuevos comportamientos.
Errores comunes
Agregar múltiples if para manejar diferentes comportamientos en la misma clase.
3. Liskov: sustituibilidad sin dolores
Una subclase debe comportarse igual que su padre, sin sorpresas.
Ejemplo práctico
public interface Notification {
void send(String message);
}
public class EmailNotification implements Notification {
public void send(String message) {
// enviar email
}
}Buenas prácticas
Evita sobrescribir métodos para cambiar completamente el comportamiento esperado.
Errores comunes
Herencia mal usada donde la subclase no respeta la lógica del contrato.
4. Interface Segregation: interfaces pequeñas, proyectos grandes
Las interfaces deben ser específicas; nada de métodos obligatorios que no se usan.
Ejemplo práctico
public interface ReadRepository {
T findById(Long id);
}
public interface WriteRepository {
T save(T entity);
} Buenas prácticas
Divide contratos grandes en interfaces pequeñas y enfocadas.
Errores comunes
Interfaces gigantes con métodos que nadie necesita.
5. Dependency Inversion: dependencias hacia abstracciones
Evita acoplarte directamente a implementaciones. Usa interfaces y contenedores de inversión de control.
Ejemplo práctico
public class OrderService {
private final Payment payment;
public OrderService(Payment payment) {
this.payment = payment;
}
public void process() {
payment.pay();
}
}Buenas prácticas
Inyecta dependencias desde afuera, no las crees dentro de la clase.
Errores comunes
Instanciar servicios internos con new, rompiendo pruebas y flexibilidad.
Conclusión
Aplicar SOLID en proyectos reales no requiere sobreingeniería. Con pasos simples puedes mejorar tu código, hacerlo más mantenible y más fácil de testear. Pulsosoft busca que desarrolladores como tú construyan software limpio y escalable.

Escrito por Giovanny Benitez
Más de esta categoría

Cómo usar ChatGPT como asistente para debugging avanzado
Cómo usar ChatGPT como asistente para debugging avanzado Introducción: Usar ChatGPT como asistente para debugging avanzado se ha convertido en una práctica poderosa para desarrolladores que quieren acelerar la identificación y solución de errores. En este artículo...

Cómo usar ChatGPT como asistente para debugging avanzado
Cómo usar ChatGPT como asistente para debugging avanzado Introducción: Usar ChatGPT como asistente para debugging avanzado se ha convertido en una práctica poderosa para desarrolladores que quieren acelerar la identificación y solución de errores. En este artículo...

Cómo usar ChatGPT como asistente para debugging avanzado
Cómo usar ChatGPT como asistente para debugging avanzado Introducción: Usar ChatGPT como asistente para debugging avanzado se ha convertido en una práctica poderosa para desarrolladores que quieren acelerar la identificación y solución de errores. En este artículo...

0 comentarios