Pages

Module Design Pattern

Les modules JavaScript sont les modèles de conception les plus utilisés pour garder des morceaux de code particuliers indépendants des autres composants. Cela offre un couplage faible pour offrir un code bien structuré.

Pour ceux qui connaissent les langages de programmation orientées objet, les modules sont des classes JavaScript. L'un des nombreux avantages des classes est l'encapsulation - en protégeant les états (propriétés) et les comportements (fonctions) des accès à d'autres classes. Le design pattern module permet des niveaux d'accès public et private.

Les modules doivent être Immediately-Invoked-Function-Expression (IIFE) pour permettre d'avoir un scope privé - c'est-à-dire une closure qui protège les variables et les méthodes (cependant, il renverra un objet au lieu d'une fonction). Voila à quoi ça ressemble:



Dans le code suivant on instancie les variables et/ou les fonctions privées avant de renvoyer notre objet dans le block return. Le code en dehors de notre closure est incapable d'accéder à nos variables privées car elles n'ont pas la même portée. 



Notez que callGetPassword est lié à l'objet renvoyé et peut être référencé dans l'espace de noms User. Cependant, en dehors du module, la variable password ne peut pas être référencée.

Il existe au moins trois façons différentes de mettre en œuvre le modèle du module
, mais le modèle du Revealing module est le seul descendant ayant un nom officiel, il est le plus célèbre et le plus populaire. Il présente un certain nombre d'avantages par rapport aux autres alternatives, telles que :
  • Renommer les fonctions publiques sans changer le corps de la fonction.
  • Changez les membres de public à privé ou vice versa en modifiant une seule ligne, sans changer le corps de la fonction.
Le Revealing module pattern satisfait trois conditions supplémentaires en plus de celles de l'original :
  • L'objet de retour est un objet littéral sans définition de fonction. Toutes les expressions du côté droit sont des variables de la closure. Tous les membres, publics ou privés, sont définis dans la closure.
  • Toutes les références se font via les variables de closure, et non l'objet de retour.
La mise en œuvre directe de ce modèle ressemble à ceci:

houdass

Développeur depuis quelques années, j'ai une connaissance approfondie de nombreux langages et frameworks. Curieux de comprendre le "comment ça fonctionne" plutôt que de simplement "utiliser", c'est avec cet état d'esprit que j'évolue depuis plusieurs années et que j'élargie mes horizons.

Related Posts:

Aucun commentaire:

Enregistrer un commentaire