Partage
  • Partager sur Facebook
  • Partager sur Twitter

Factory fonction et relation de composition

Sujet résolu
    14 janvier 2018 à 13:42:41

    Bonjour !

    J'utilise des fonctions "usines" qui fabriquent des objets. Pour simplifier, j'ai une bibliothéque de livres. J'ai donc une fonction usine capable de générer des bibliothéques (même si j'en ai besoin que d'une pour le moment) et une autre capable de générer des livres. Le code ressemble à ça :

    const addLivre = ({
        name = 'livre sans titre'
    } = {}) => ({
        name
    })
    
    const addBiblio = ({
        list = [] //liste de livres
    } = {}) => {
        if (list.length === 0) {
            list.push(addLivre({name: 'Guide d\'utilisation'})
        }
        return {list}
    }


    Comme on peut le voir, si une bibliothèque est créée sans livre, alors un guide d'utilisation est créé et ajouté à la bibliothèque.

    Pour ajouter une bibliothèque, je fais :

    const maBiblio = addBiblio()


    "maBiblio" contient bien un livre qui se nomme "Guide d'utilisation".

    Maintenant, je voudrais ajouter un nouveau livre à la bibliothèque et j'aimerai, pour ce faire, écrire :

    maBiblio.addLivre({name: "Nouveau livre"})

    Comment faire ? :D

    • Partager sur Facebook
    • Partager sur Twitter
      14 janvier 2018 à 14:49:00

      Salut,

      Vu que ta variable maBiblio se trouve être un tableau tu peux faire :

      maBiblio.push(..)


      ?

      • Partager sur Facebook
      • Partager sur Twitter
        14 janvier 2018 à 14:53:33

        Hum non, ce n'est pas un tableau. C'est un objet contenant un tableau (et il contiendra bien plus par la suite) :

        maBiblio = {list: [...]}



        • Partager sur Facebook
        • Partager sur Twitter
          14 janvier 2018 à 15:05:15

          Cette réponse te convient t'elle?

          const addLivre = ({
              name = 'livre sans titre'
          } = {}) => ({
              name
          })
          
          const addBiblio = ({
              list = [],
              name = 'Guide d\'utilisation',
          } = {}) => {
          	list.length == 0 ? list.push(addLivre({name})) : list.push({name})
              return {
              	list,
              	addLivre: ({name ='livre sans titre'} = {}) => addBiblio({list, name})
              }
          }



          • Partager sur Facebook
          • Partager sur Twitter
          Si vous voulez me mp, venez sur Discord (username: Stelyus#8984)
            14 janvier 2018 à 15:12:35

            Merci Stelyus, c'est parfait !

            En y pensant, il n'y a pas moyen d'enlever l'espèce de doublon addLivre ? Car un livre n'aura pas qu'un nom.

            -
            Edité par Diatomée 14 janvier 2018 à 15:18:10

            • Partager sur Facebook
            • Partager sur Twitter

            Factory fonction et relation de composition

            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
            • Editeur
            • Markdown