4 votes

Qu'est-ce qu'une fabrique dans Angular ?

Je lisais un article de Max NgWizard K, sur la façon dont Angular met à jour le DOM. Je suis tombé sur ce qui suit :

Pour chaque composant utilisé dans l'application, le compilateur Angular génère une fabrique. Lorsqu'Angular crée un composant à partir d'une fabrique, Angular utilise cette fabrique pour instancier la définition de la vue qui, à son tour, est utilisée pour créer la vue du composant. Sous le capot, Angular représente une application comme un arbre de vues.

En autre article de Max NgWizard K J'ai trouvé la définition d'une usine :

Les fabriques décrivent la structure d'une vue de composant et sont utilisées lors de l'instanciation du composant.

Je ne sais pas vraiment ce que cela signifie.

Questions :

  1. Que sont exactement les usines dans Angular(2+) ?
  2. Existe-t-il des scénarios pour lesquels un développeur a intérêt à savoir comment ils fonctionnent ?

4voto

Abhijit Kar ツ Points 1099

Que sont exactement les usines dans Angular(2+) ?

Usine est l'un des modèles de conception mentionnés par Gang of Four (en fait, ils ont écrit un livre sur les modèles de conception qu'ils ont découverts).

Modèles de conception aident les programmeurs à résoudre des tâches de développement courantes d'une manière spécifique.

Et dans ce cas, le Usine aide à l'instanciation et à la création d'objets.

Il est également connu sous le nom de constructeur virtuel.


Pensez-y, comme ceci :

Supposons que vous créez un jeu de tir en 2D et que vous devez tirer des balles à partir de barils.

Au lieu d'instancier des balles comme new Bullet() Si l'on veut créer des balles, à chaque fois que l'on appuie sur la gâchette, on peut utiliser une usine pour créer des balles, c'est-à-dire WeaponsFactory.createInstance(BulletTypes.AK47_BULLET) .

Il devient très évolutif, puisqu'il suffit de modifier l'énumération pour que la fabrique le fasse pour vous.

Vous n'aurez pas à l'instancier manuellement.


C'est ce que fait angular, il crée automatiquement des usines pour tous les composants. Ce qui lui facilite la tâche.

Existe-t-il des scénarios pour lesquels un développeur a intérêt à savoir comment ils fonctionnent ?

Il n'est pas nécessaire de connaître les rouages d'une Factory pour utiliser Angular, mais elle est utile pour créer des composants de manière dynamique !

Par exemple, de nombreux *ngIf ou *ngSwitchCase peuvent être remplacés par une simple génération dynamique de composants.

Les composants peuvent être créés dynamiquement de la manière suivante :

createComponent(type) {
  this.container.clear();
  const factory: ComponentFactory = this.resolver.resolveComponentFactory(AlertComponent);
  this.componentRef: ComponentRef = this.container.createComponent(factory);
}

Référence pour la compréhension du code ci-dessus : Création dynamique de composants

1voto

estus Points 5252

Dans ce cas, "une usine" est une instance de ComponentFactory , une classe qui a create qui met en œuvre la méthode Modèle de méthode d'usine .

Quand componentFactory.create est appelé (soit directement, soit par l'intermédiaire de ComponentFactoryResolver - ce qui est essentiel pour les composants dynamiques, car article lié explique), une nouvelle instance de composant est créée.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X