Principios SOLID: Aplicación Práctica en Arquitecturas Limpias
Clase 5 de 24 • Curso de Arquitecturas Limpias para Desarrollo de Software
Contenido del curso
Conceptos detrás de las Arquitecturas Limpias
Arquitecturas de referencia
- 6

Arquitectura Hexagonal: Puertos y Adaptadores en Desarrollo de Software
07:00 min - 7

Arquitectura Onion: Diseño y Aplicación en Desarrollo de Software
05:09 min - 8

Desglose de Capas en Clean Architecture
03:20 min - 9

Implementación de Arquitectura Limpia en Empresas Reales
10:06 min - 10

Conclusiones sobre Arquitectura de Software Adaptativa
04:00 min
Dominio de una arquitectura
- 11

Errores Comunes al Manejar la Lógica de Dominio en Sistemas de Información
08:37 min - 12

Script de Transacción en Arquitectura de Software
08:26 min - 13

Inyección de Dependencias e Inversión de Control en Java
07:40 min - 14

Modelos de Dominio en Programación Orientada a Objetos
06:43 min - 15

Capa de Servicios y Fachada en la Arquitectura de Software
04:19 min - 16

Casos de Uso en Clean Architecture con C#
07:08 min - 17

Implementación de CQRS en Arquitecturas Limpias con C#
12:00 min
Capa externa
- 18

Acceso a Datos en Arquitectura Limpia: Fuentes y Pruebas Efectivas
06:03 min - 19

Implementación del Patrón Repository en Arquitectura de Software
08:17 min - 20

Implementación de APIs y Web con Spring Boot en Arquitectura Limpia
05:28 min - 21

Implementación de Integraciones con el Patrón Adapter en Arquitectura Limpia
09:06 min - 22

Pruebas Unitarias en Arquitecturas Limpias con Java y Spring Boot
05:39 min - 23

Pruebas de Integración con Dobles de Prueba en Aplicaciones
09:26 min
Cierre
¿Qué son los principios de diseño SOLID?
Los principios de diseño SOLID son una serie de normas que guían a los desarrolladores en la creación de software más mantenible, flexible y escalable. Estos principios son esenciales para implementar arquitecturas limpias. Aunque son cinco en total, en esta ocasión nos enfocaremos en tres: el principio de responsabilidad única (S), el principio de abierto y cerrado (O) y el principio de inversión de dependencias (D).
¿Qué es el principio de responsabilidad única?
El principio de responsabilidad única, representado por la letra "S" en SOLID, afirma que un módulo debe tener una sola razón para cambiar. Un módulo puede ser un archivo o una clase, y este principio nos ayuda a evitar combinar múltiples responsabilidades en un solo lugar.
Ejemplo práctico:
Imagina una aplicación en JavaScript que recibe solicitudes a través del método POST, realiza validaciones y guarda datos en una base de datos. Actualmente, este código tiene tres razones para cambiar: la comunicación (HTTP), la validación de datos y el acceso a la base de datos.
function handleRequest(req) {
validateRequest(req);
saveToDatabase(req);
}
function validateRequest(req) {
// Validaciones para correo y nombre
}
function saveToDatabase(req) {
// Inserta en la base de datos
}
En lugar de combinar estas tareas, el principio de responsabilidad única sugiere que debemos separarlas en funciones o clases, cada una con su propia responsabilidad.
¿Cómo aplicar el principio de abierto y cerrado?
El principio de abierto y cerrado, simbolizado por la letra "O", sugiere que un módulo debe estar abierto para extenderse pero cerrado para modificarse. Esto implica que, en lugar de alterar el código existente al añadir nuevas funcionalidades, las nuevas características deben integrarse sin modificar la estructura ya existente.
Ejemplo práctico:
En un sistema con estructuras condicionales encadenadas para diferentes ciudades:
if (city === 'Cali') {
processCali();
} else if (city === 'Lima') {
processLima();
}
Es preferible estructurarlo para permitir extensibilidad:
class CityProcessor {
process() {}
}
class CaliProcessor extends CityProcessor {
process() {
// Proceso para Cali
}
}
class LimaProcessor extends CityProcessor {
process() {
// Proceso para Lima
}
}
Al crear clases específicas, podemos añadir nuevas ciudades aplicando herencia, evitando modificar el código existente y mejorando la mantenibilidad.
¿Qué es el principio de inversión de dependencias?
El principio de inversión de dependencias, correspondiente a la letra "D", sostiene que los módulos de alto nivel no deben depender de los módulos de bajo nivel. Más bien, ambos deben depender de abstracciones, ya que los detalles deben depender de las abstracciones y no al revés.
Explicación detallada:
- Presentación y Acceso a Datos: Son módulos de bajo nivel. Tienden a cambiar más frecuentemente.
- Dominio (Lógica de Negocio): Es un módulo de alto nivel. Debe permanecer independiente de detalles de implementación específicos, como cambios en la base de datos o en la interfaz de usuario.
Uso de la inyección de dependencias:
La inyección de dependencias es crucial para implementar este principio, ya que permite que los módulos de alto nivel no dependan directamente de las implementaciones de bajo nivel, sino de interfaces o abstracciones.
Mediante estos principios, los desarrolladores pueden lograr sistemas más robustos, con un crecimiento controlado y sostenibles en el tiempo, comenzando por una estructura robusta y lógica desde el inicio de los proyectos. ¡Continúa explorando estos conceptos para perfeccionar aún más tus habilidades de programación!