OpenClassrooms-Student-Center / Utilisez-des-design-patterns-en-JavaScript

Le projet fil rouge du cours Utilisez des design patterns avec JavaScript
0 stars 151 forks source link

Problématique Adapter Pattern #5

Open Guiloux opened 2 years ago

Guiloux commented 2 years ago

Description

Nous pouvons désormais filtrer nos films par acteur grâce à une API de filtrage. Cette API se trouve dans le dossier lib à la racine de notre projet. Le problème, c'est que la première version n'est pas très rapide et met une seconde à afficher les films filtrés : c'est énorme !

Nous avons décidé de développer une nouvelle version de cette API : lib/filter-v2. Seulement voilà, cette nouvelle version ne s'utilise pas tout à fait pareil.

_// Voici comment on utilise la V1_
const FilterLib = new FilterV1(this.Movies, actor)
const FilteredMoviesV1 = await FilterLib.filterByActor()

_// Voici comment on utilise la V2_
const FilteredMoviesV2 = await FilterV2.filterByActor(this.actor, this.Movies)

User Stories

Première User Story

JohanPeraldi commented 2 years ago

Dans le screencast présentant la solution à l'exercice dans le cours d’OpenClassrooms, Thomas instancie son adapteur de filtre en inversant les arguments attendus (ligne 17 de FilterForm.js):

const FilterLib = new FilterMoviesAdapter(actor, this.Movies)

Or c’est bien les films qu’il faut passer en premier argument et l’acteur en deuxième, comme indiqué dans la solution présentée ici:

const FilterLib = new FilterMoviesAdapter(this.Movies, actor)
tdimnet commented 2 years ago

Good call @JohanPeraldi ! Il n'y a plus qu'à espérer qu'OC fasse quelque chose ^^

JohanPeraldi commented 2 years ago

Excellent cours sur les design patterns cela dit! Merci.

Barberousse93 commented 1 year ago

C'EST UNE ESCROQUERIE !! :D Il suffit de commenter la ligne : await new Promise(resolve => setTimeout(resolve, 1000)) pour que soudainement, l'exécution soit instantanée !! Bon... je sors...

tdimnet commented 1 year ago

Oops ^^

Elishaya13 commented 1 year ago

L'acteur à été ajouté dans le constructeur des models , soit dans ExternalMovie.js pour "sylvester", soit dans Movie.js pour "arnold." (this._actor = "arnold") Voila si comme moi vous buguiez à vous demander comment l'app pouvait savoir si c'était arnold ou sylvester, ne trouvant pas l'information dans les data json ...