270 words
1 minute
2.1 S Principio De Responsabilidad Única
S: Principio de Responsabilidad Única (Single Responsibility Principle)
Definición
El Principio de Responsabilidad Única (SRP) establece que: “Una clase debe tener una sola razón para cambiar”.
Cada clase debe encargarse de una única parte de la funcionalidad y encapsular completamente esa responsabilidad. El objetivo principal es reducir la complejidad y hacer el código más mantenible y fácil de probar.
Motivación
- Si una clase hace demasiadas cosas, tendrás que modificarla constantemente.
- Esto aumenta el riesgo de romper otras partes del sistema.
- Dividir responsabilidades facilita la lectura, la extensión y la navegación del código.
Ejemplo conceptual
Clase Empleado con dos responsabilidades:
- Gestionar datos del empleado.
- Generar reportes de horas trabajadas.
Esto genera múltiples razones de cambio. La solución es separar responsabilidades: una clase para manejar empleados y otra para generar reportes.
Ejemplo en Spring Boot (Java, IntelliJ IDEA)
Antes (violando SRP)
@Servicepublic class EmployeeService {
public void saveEmployee(String name) { System.out.println("Empleado guardado: " + name); }
public void printWorkReport(String name) { System.out.println("Reporte de horas trabajado para: " + name); }}Después (aplicando SRP)
@Servicepublic class EmployeeService { public void saveEmployee(String name) { System.out.println("Empleado guardado: " + name); }}
@Servicepublic class ReportService { public void printWorkReport(String name) { System.out.println("Reporte de horas trabajado para: " + name); }}Ahora:
EmployeeServicesolo maneja empleados.ReportServicese encarga de los reportes.
Ejemplo en Django (Python, PyCharm)
Antes (violando SRP)
class EmployeeService: def save_employee(self, name): print(f"Empleado guardado: {name}")
def print_work_report(self, name): print(f"Reporte de horas trabajado para: {name}")Después (aplicando SRP)
class EmployeeService: def save_employee(self, name): print(f"Empleado guardado: {name}")
class ReportService: def print_work_report(self, name): print(f"Reporte de horas trabajado para: {name}")Ahora:
EmployeeServicegestiona empleados.ReportServicese encarga de reportes.
Conclusión
El SRP ayuda a:
- Evitar clases con múltiples motivos de cambio.
- Mantener el código modular y claro.
- Reducir riesgos al modificar y extender el sistema.
2.1 S Principio De Responsabilidad Única
https://jangelmm.github.io/posts/informatica/ingenieriasoftware/diseño-e-implementacion-de-software-con-patrones/21-s---principio-de-responsabilidad-única/