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 Singleton Pattern #4

Open Guiloux opened 2 years ago

Guiloux commented 2 years ago

Description

Nouveauté ! Au démarrage du projet, nous avons désormais une modale qui s'affiche. Cette modale comprend un formulaire où l'utilisateur va pouvoir rentrer son prénom et son nom.

Ces informations vont devoir être stockées via l'API de LocalStorage. À partir du fichierjs/db/User.js, créez un Singleton qui va gérer la connexion utilisateur.

En parcourant le code, vous constaterez des modifications dans les fichiers :

Vous n'avez pas besoin de toucher aux règles d'affiche du fichier Modal.js, concentrez-vous uniquement sur le fichier User.js

User Stories

Première User Story

Deuxième User Story

Troisième User Story

The-algar commented 2 years ago

Bonjour, ce cours est de loin le meilleur cours de ma formation "Développeur d'application - JavaScript React" surtout grâce à vos video qui démontre le parcours intellectuel nécessaire pour bien coder.

Je serai ravi si vous refactorisiez le cours [Apprenez à programmer avec JavaScript] (https://openclassrooms.com/fr/courses/6175841-apprenez-a-programmer-avec-javascript) car les codepen avec la solution, bien qu'utiles, ne permettent pas de suivre pas à pas la construction du code, ce qui est à mon sens aussi important que les exercices -

Vous n'avez pas un projet en ce sens pour OpenClassrooms par hasard ? ce serait trop cool.

Encore merci de la qualité de votre cours - grâce à vous je commence à réellement comprendre comment créer du code et pas seulement à adapter du code existants. Merci

tdimnet commented 2 years ago

Bonjour @The-algar .

Merci pour le message. En vrai, il y a pas mal de choses que je changerais sur les cours d'introduction au JavaScript ^^. Malheureusement, j'ai un peu mis en pause OpenClassooms. Je réfléchis depuis quelques mois à la suite, au contenu que je pourrais produire (même si j'ai pas mal d'idées) et surtout au medium (Youtube, Twitch, Medium, autre chose...).

Selon vous, qu'est-ce qui vous intéresserait le plus ?

The-algar commented 2 years ago

Bonjour, désolé du temps que j'ai pris à vous répondre mais j'avais la soutenance du P6 JS react samedi dernier et si je l'ai validé c'est bien grâce à votre cours sur les Design Patterns

j'ai commencé le JS il y a 4 mois et mon constat est que je comprend (généralement" le code quand je le vois mais je ne suis pas encor capable de le concevoir et l'écrire de scratch vos exemple en vidéo en pas à pas qui explique comment mettre en place le code permettent de visualiser le process de réflexion et les best practice pour concevoir le code

et c'est ce qui me manque sur les premiers cours d'introduction au JS si vous faites des contenus sur Youtube il est for probable que je les suivrai

Bonne continuation et encore merci de votre aide sur OC Bonne journée Eric


De : Thomas Dimnet @.> Envoyé : jeudi 9 juin 2022 16:48 À : OpenClassrooms-Student-Center/Utilisez-des-design-patterns-en-JavaScript @.> Cc : Eric M. Clermontet @.>; Mention @.> Objet : Re: [OpenClassrooms-Student-Center/Utilisez-des-design-patterns-en-JavaScript] Problématique Singleton Pattern (Issue #4)

Bonjour @The-algarhttps://github.com/The-algar .

Merci pour le message. En vrai, il y a pas mal de choses que je changerais sur les cours d'introduction au JavaScript ^^. Malheureusement, j'ai un peu mis en pause OpenClassooms. Je réfléchis depuis quelques mois à la suite, au contenu que je pourrais produire (même si j'ai pas mal d'idées) et surtout au medium (Youtube, Twitch, Medium, autre chose...).

Selon vous, qu'est-ce qui vous intéresserait le plus ?

— Reply to this email directly, view it on GitHubhttps://github.com/OpenClassrooms-Student-Center/Utilisez-des-design-patterns-en-JavaScript/issues/4#issuecomment-1151218391, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AH7Y6OJ46SJR4KQOUK4RO7TVOH74LANCNFSM5G2V4L7A. You are receiving this because you were mentioned.Message ID: @.***>

tdimnet commented 2 years ago

Intéressant !

Merci pour votre réponse, Eric. Je vais voir ce que je peux faire et je reviendrais vers vous 👍

Elishaya13 commented 1 year ago

Bonjour la solution donnée était un peu lourde et l'instance de la classe user dans le get user était inutile et jamais lu. J'ai modifié le code de la solution de la methode get user de la class User, pour alléger la class User, et tout fonctionne correctement avec un code moins lourd et plus clair:


class User {
  constructor(data) {
    if (User.exists) {
      return User.instance;
    } else if (data && data.firstName && data.lastName) {
      this._firstName = data.firstName;
      this._lastName = data.lastName;

      this.saveToLocalStorage();

      User.exists = true;
      User.instance = this;

      return this;
    }
  }
  get firstName() {
    return this._firstName;
  }
  get lastName() {
    return this._lastName;
  }
  get user() {
    const firstName = this._firstName || localStorage.getItem("firstName");
    const lastName = this._lastName || localStorage.getItem("lastName");

    if (firstName && lastName) {
      return {
        firstName: firstName,
        lastName: lastName,
      };
    }
    return null;
  }

  saveToLocalStorage() {
    localStorage.setItem("firstName", this._firstName);
    localStorage.setItem("lastName", this._lastName);
  }
}