- El sistema está compuesto por 5 clases principales, todas ellas con “métodos fake” para poder simplificar.
- Deberás acceder al sistema desde el index.php, script que únicamente se encarga de cargar el autoloader y ejecutar el método index de la clase ExamenIndexController.
- Nuestro sistema supuestamente se encarga de gestionar un reproductor de música (clase ReproductorMusica) a través de un único controlador (clase ExamenIndexCtrl).
- Entendemos que el reproductor (ReproductorMusica) puede ser de 3 tipos: 'local', 'spotify' o 'google_play'. Esto se indica a través del atributo de clase 'tipo_reproductor'.
- El reproductor delega la gestión de las recomendaciones en una clase externa. Decidiremos qué clase externa hace de recomendador en función del tipo de reproductor. Es decir:
- Atributo 'tipo_reproductor' con valor 'local' => 'recomendador' será de tipo 'RecomendadorLocal'
- Atributo 'tipo_reproductor' con valor 'spotify' => 'recomendador' será de tipo 'RecomendadorExternoBlueknow'
- Atributo 'tipo_reproductor' con valor 'google_play' => 'recomendador' será de tipo 'RecomendadorExternoRedknow'
- Los 3 recomendadores se engloban en dos tipos:
- RecomendadorLocal: Local (no necesita ser inicializado para pedir recomendaciones).
- RecomendadorExternoBlueknow y RecomendadorExternoRedknow: Remoto (necesitan ser inicializados antes de poder pedir recomendaciones).
- Mejora la modularidad de la clase ReproductorMusica aplicando el principio Open/Close.
- Ahora la clase ReproductorMusica estaría acoplada con las 3 clases de gestión de recomendaciones. Invierte esa dependencia.
- Haz el diagrama de clases del dominio resultante tras aplicar las modificaciones.