Principio de
Responsabilidad
Única en Java
El principio de responsabilidad única es un principio fundamental de
diseño de software. Establece que cada clase o módulo debe tener una
única razón de cambio, es decir, una única responsabilidad. Esto ayuda a
crear código más mantenible, escalable y fácil de entender.
Daniel Estrella
Definición de
Responsabilidad Única
La responsabilidad única significa que una clase o módulo debe tener una
sola razón para cambiar. Esto significa que debe estar diseñado para
realizar una tarea específica y bien definida, sin mezclar
responsabilidades.
Beneficios de Aplicar
Responsabilidad Única
1 Código Más
Mantenible
Al separar las
responsabilidades, el código
es más fácil de modificar,
probar y depurar.
2 Mejor Reutilización
Las clases o módulos con
responsabilidad única son
más reutilizables en
diferentes partes del sistema.
3 Mayor Escalabilidad
Es más sencillo escalar un sistema cuando cada componente tiene una
responsabilidad bien definida.
Ejemplos de Violación de
Responsabilidad Única
Clase de Usuario
Una clase de Usuario que también
maneja el acceso a la base de datos y
la validación de los datos del usuario.
Servicio de Pedidos
Un servicio de Pedidos que calcula el
total, procesa el pago y actualiza el
inventario.
Controlador Web
Un controlador web que maneja la
lógica de negocio, la presentación y la
persistencia de datos.
Identificar
Responsabilidades en el
Código
Analizar Clases
Examinar cada clase y determinar su propósito principal.
Mapear Métodos
Identificar los métodos y su relación con la responsabilidad de la
clase.
Buscar Cambios
Determinar qué cambios podrían afectar a la clase y si están
relacionados con su propósito.
Técnicas para Aplicar
Responsabilidad Única
Inspeccionar
Analizar el código en busca de clases o
módulos que tengan más de una
responsabilidad.
Dividir
Separar las responsabilidades en clases o
módulos más pequeños y específicos.
Desacoplar
Reducir las dependencias entre clases o
módulos para aumentar su independencia.
Refactorizar
Aplicar técnicas de refactorización para
mejorar la estructura del código.
Refactorización para
Cumplir Responsabilidad
Única
Antes Después
Clase Usuario con validación, acceso
a base de datos y lógica de negocio.
Clases Usuario, UsuarioValidator y
UsuarioRepository separadas.
Servicio de Pedidos con cálculo de
total, procesamiento de pago y
actualización de inventario.
Servicios de Pedidos, PagoProcessor y
InventarioActualizador
independientes.
Controlador Web con lógica de
presentación, negocio y persistencia.
Controlador Web, Servicio de Negocio
y Repositorio de Datos.
Conclusión y Mejores
Prácticas
Diseño Modular
Dividir el código en módulos
pequeños y bien definidos facilita su
mantenimiento y escalabilidad.
Pruebas Unitarias
Las clases con responsabilidad
única son más fáciles de probar de
forma aislada.
Legibilidad de Código
El código más organizado y con
responsabilidades claras es más
fácil de entender y modificar.
Reutilización
Las clases con responsabilidad
única pueden ser reutilizadas en
diferentes partes del sistema.

Principio-de-Responsabilidad-Unica-en-Java

  • 1.
    Principio de Responsabilidad Única enJava El principio de responsabilidad única es un principio fundamental de diseño de software. Establece que cada clase o módulo debe tener una única razón de cambio, es decir, una única responsabilidad. Esto ayuda a crear código más mantenible, escalable y fácil de entender. Daniel Estrella
  • 2.
    Definición de Responsabilidad Única Laresponsabilidad única significa que una clase o módulo debe tener una sola razón para cambiar. Esto significa que debe estar diseñado para realizar una tarea específica y bien definida, sin mezclar responsabilidades.
  • 3.
    Beneficios de Aplicar ResponsabilidadÚnica 1 Código Más Mantenible Al separar las responsabilidades, el código es más fácil de modificar, probar y depurar. 2 Mejor Reutilización Las clases o módulos con responsabilidad única son más reutilizables en diferentes partes del sistema. 3 Mayor Escalabilidad Es más sencillo escalar un sistema cuando cada componente tiene una responsabilidad bien definida.
  • 4.
    Ejemplos de Violaciónde Responsabilidad Única Clase de Usuario Una clase de Usuario que también maneja el acceso a la base de datos y la validación de los datos del usuario. Servicio de Pedidos Un servicio de Pedidos que calcula el total, procesa el pago y actualiza el inventario. Controlador Web Un controlador web que maneja la lógica de negocio, la presentación y la persistencia de datos.
  • 5.
    Identificar Responsabilidades en el Código AnalizarClases Examinar cada clase y determinar su propósito principal. Mapear Métodos Identificar los métodos y su relación con la responsabilidad de la clase. Buscar Cambios Determinar qué cambios podrían afectar a la clase y si están relacionados con su propósito.
  • 6.
    Técnicas para Aplicar ResponsabilidadÚnica Inspeccionar Analizar el código en busca de clases o módulos que tengan más de una responsabilidad. Dividir Separar las responsabilidades en clases o módulos más pequeños y específicos. Desacoplar Reducir las dependencias entre clases o módulos para aumentar su independencia. Refactorizar Aplicar técnicas de refactorización para mejorar la estructura del código.
  • 7.
    Refactorización para Cumplir Responsabilidad Única AntesDespués Clase Usuario con validación, acceso a base de datos y lógica de negocio. Clases Usuario, UsuarioValidator y UsuarioRepository separadas. Servicio de Pedidos con cálculo de total, procesamiento de pago y actualización de inventario. Servicios de Pedidos, PagoProcessor y InventarioActualizador independientes. Controlador Web con lógica de presentación, negocio y persistencia. Controlador Web, Servicio de Negocio y Repositorio de Datos.
  • 8.
    Conclusión y Mejores Prácticas DiseñoModular Dividir el código en módulos pequeños y bien definidos facilita su mantenimiento y escalabilidad. Pruebas Unitarias Las clases con responsabilidad única son más fáciles de probar de forma aislada. Legibilidad de Código El código más organizado y con responsabilidades claras es más fácil de entender y modificar. Reutilización Las clases con responsabilidad única pueden ser reutilizadas en diferentes partes del sistema.