Proyecto Videoclub
Objetivo rápido
- El repositorio contiene una implementación simple de un videoclub con persistencia en JSON (clases
JsonPeliculaDao,JsonSocioDao,JsonAlquilerDao) y un servicio acoplado (AlquilerService). - La tarea de los alumnos es aplicar Inversión de Dependencias / Inyección de Dependencias para desacoplar
AlquilerServicede las implementaciones concretas.
Conceptos clave (muy breve)
- Inversión de Control (IoC)
- Idea: en vez de que una clase controle sus dependencias, se invierte el control y otro componente "inyecta" o proporciona esas dependencias.
- Resultado: clases más pequeñas y desacopladas; el flujo de construcción de objetos se controla desde fuera.
- Inversión de Dependencias (Dependency Inversion Principle, DIP)
- Principio SOLID: los módulos de alto nivel no deben depender de módulos de bajo nivel; ambos deben depender de abstracciones (interfaces).
- En la práctica:
AlquilerService(módulo de alto nivel) debe depender de una interfazAlquilerDao/PeliculaDao/SocioDao, no deJson*Daoconcretas.
- Inyección de Dependencias (DI)
- Patrón para proporcionar las dependencias a una clase (constructor, setter o por campo).
- Ejemplo: en lugar de que
AlquilerServicecreenew JsonPeliculaDao(...), se le pasa un objeto que implementaPeliculaDaodesde fuera (constructor).