Hollywood
"No nos llames, nosotros te llamamos". Este principio delega el control principal a un framework o componente de mayor nivel. Es común en frameworks como Spring, Angular, y Django.
Este principio enfatiza la idea de control inverso: en lugar de que un componente de bajo nivel controle el flujo de ejecución, el componente de alto nivel es quien decide cuándo y cómo interactuar con el componente de bajo nivel. Es fundamental en patrones como Inversión de Control (IoC) y Inyección de Dependencias (DI).
1. Cómo Funciona? #
-
En el desarrollo tradicional, los componentes de bajo nivel llaman a los componentes de alto nivel para ejecutar ciertas acciones. Esto crea una fuerte dependencia entre ellos, lo que puede dificultar la mantenibilidad y escalabilidad del sistema.
-
Con el principio de Hollywood:
- Los componentes de bajo nivel están registrados o inyectados en los de alto nivel.
- Los componentes de alto nivel deciden cuándo y cómo llamar a los de bajo nivel.
2. Dónde se Aplica? #
- Inversión de Control (IoC): Frameworks como Spring o .NET Core gestionan el ciclo de vida de los objetos, inyectándolos según sea necesario.
- Callbacks: Los callbacks en lenguajes como JavaScript siguen este principio: el sistema llama a tu función cuando sucede un evento.
- Patrón Observador: En patrones como el observador, los objetos registrados son notificados por un componente principal cuando ocurre un cambio.
Código Malo #
Problema: El flujo de control lo maneja el desarrollador, lo que dificulta la escalabilidad.
Solución: El framework controla el flujo de ejecución, haciendo el código más modular.
- Desacoplamiento: Los componentes de bajo nivel no necesitan saber cómo funcionan los de alto nivel.
- Flexibilidad: Es fácil reemplazar o modificar los componentes de bajo nivel sin afectar el resto del sistema.
- Reutilización: Los componentes de bajo nivel son más reutilizables, ya que no dependen de implementaciones específicas.
- Escalabilidad: Facilita la integración de nuevos componentes sin afectar los existentes.
Código Bueno #
Resumen del tema
Conceptos clave #
- Principio de Hollywood: "No nos llames, nosotros te llamaremos" (Don't call us, we'll call you).
- Inversión de Control (IoC): los módulos de alto nivel o frameworks orquestan el flujo y deciden cuándo ejecutar los componentes de bajo nivel.
- Uso en Patrones y Frameworks: base de callbacks, eventos, listeners, middlewares y frameworks como Spring, React o Express.
Qué debes recordar #
Permite que los componentes de alto nivel orquesten el flujo de ejecución e invoquen a los componentes especializados cuando corresponda.