Clean Architecture es un enfoque para diseñar sistemas de software complejos que asegura la independencia de la lógica de negocio de los frameworks, bases de datos, interfaces de usuario y otros factores externos. Se basa en la separación del código en capas, entre las cuales hay mínima influencia mutua.
En la Clean Architecture clásica, vemos capas internas (Use Cases, Entities) y externas (Frameworks, Gateways, Controllers). El movimiento de dependencias ocurre solo hacia dentro (inversión de dependencias), lo que permite configurar, modificar y probar sistemas fácilmente sin riesgo de interrumpir la lógica de negocio crítica.
Ejemplo de código (en Python):
# Entidad class Order: def __init__(self, id, total): self.id = id self.total = total # Caso de uso class CompleteOrderUseCase: def __init__(self, order_repository): self.order_repository = order_repository def execute(self, order_id): order = self.order_repository.get_by_id(order_id) order.completed = True self.order_repository.save(order)
Características clave:
¿Pueden todas las capas de Clean Architecture ser implementadas como servicios separados?
No necesariamente. A veces, separar cada capa en un servicio separado no es práctico debido al alto acoplamiento o el sobrecosto de comunicación. Las capas son una separación lógica; la aislamiento físico solo es necesario cuando hay una justificación.
¿Se puede romper la regla de la dirección de dependencias en Clean Architecture si eso acelera el desarrollo?
No, porque incluso un pequeño ahorro de tiempo conduce a una mayor complejidad en el mantenimiento futuro. La dirección de dependencias es un principio fundamental de Clean Architecture y violarlo resulta en la pérdida de las ventajas de la estructura.
¿Siempre deben implementarse las reglas de negocio exclusivamente en la capa interna?
Sí, todas las reglas de negocio importantes deben estar en la capa interna (Entities o Use Cases), para que los cambios en las dependencias externas no afecten a la lógica de negocio.