Maison interface Web js tutoriel Tutoriel sur l'utilisation de modèles de combinaison dans le développement de modèles de conception JavaScript (avancé)

Tutoriel sur l'utilisation de modèles de combinaison dans le développement de modèles de conception JavaScript (avancé)

May 21, 2018 pm 02:06 PM
javascript js 设计模式

Le mode combinaison peut être compris comme une structure arborescente, le mode combinaison est donc adapté pour faire fonctionner un grand nombre d'objets, en particulier ceux avec des hiérarchies claires. Jetons un coup d'œil au tutoriel sur l'utilisation du mode combinaison dans le développement de. le modèle de conception JavaScript dit orienté objet

Dans notre processus de développement quotidien, nous rencontrerons certainement cette situation : traiter en même temps des objets simples et des objets complexes composés d'objets simples. seront combinés dans une arborescence et ils seront traités sur le client. Soyez cohérent lors de la manipulation. Par exemple, pour les commandes de produits sur les sites Web de commerce électronique, chaque commande de produit peut comporter plusieurs combinaisons de sous-commandes, telles que des dossiers du système d'exploitation. Chaque dossier comporte plusieurs sous-dossiers ou fichiers. En tant qu'utilisateur, nous pouvons copier, supprimer, etc. . Lors de l'exploitation, qu'il s'agisse d'un dossier ou d'un fichier, c'est la même chose pour nous les opérateurs. Dans ce scénario, il est très approprié d’utiliser le mode combinaison.

Connaissances de base

Mode composition : combinez des objets dans une structure arborescente pour représenter la hiérarchie "partie-tout". Le mode combinaison permet aux utilisateurs de combiner des objets uniques et des combinaisons. Les objets sont utilisés de manière cohérente.
Le modèle de combinaison a principalement trois rôles :
(1) Composant abstrait (Component) : classe abstraite, qui définit principalement l'interface publique des objets participant à la combinaison
(2) Sous-objet (Leaf ) : forme l'objet combiné L'objet le plus basique
(3) Objet composite (Composite) : un objet complexe composé de sous-objets
La clé pour comprendre le mode combinaison est de comprendre la cohérence de l'utilisation du mode combinaison d'objets simples et d'objets combinés. Nous parlerons ensuite de la mise en œuvre du modèle de combinaison pour approfondir notre compréhension.
Le mode combinaison est conçu sur mesure pour créer dynamiquement une interface utilisateur sur la page. Vous ne pouvez utiliser qu'une seule commande life= pour initialiser certaines opérations complexes ou récursives pour de nombreux objets :
(1 ) permet de traiter un groupe d'objets comme un objet spécifique. Un objet composite (A composite) implémente la même opération que les sous-objets qui le composent. Effectuer une opération sur l'objet composite entraînera tous les sous-objets sous l'objet. pour effectuer la même opération. .Ainsi, vous pouvez non seulement remplacer de manière transparente un seul objet par un ensemble d'objets, mais aussi vice versa. Ces objets indépendants sont dits faiblement couplés
(2) Le mode combinaison combinera les. Le sous-objet est défini dans une structure arborescente et permet de parcourir l'ensemble de l'arborescence. Cela masque l'implémentation interne et vous permet d'organiser les sous-objets de n'importe quelle manière. Tout code dans cet objet (objet composite) ne dépendra pas de l'implémentation du. sous-objets internes

Implémentation du mode de combinaison

(1) Le mode de combinaison le plus simple

La structure DOM de Le document HTML est une arborescence naturelle, les éléments les plus basiques sont transformés en une arborescence DOM et enfin en un document DOM, très adapté au mode combinaison.
Nous utilisons couramment la bibliothèque de classes jQuery, dans laquelle le mode combinaison est encore plus fréquemment utilisé. Par exemple, le code suivant est souvent implémenté :

$(".test").addClass("noTest").remove("test");
Copier après la connexion

Ce code simple permet d'obtenir l'élément dont. class contient test, puis effectue le traitement addClass et removeClass, que $(".test") soit un élément ou plusieurs éléments, il est finalement appelé via les interfaces unifiées addClass et removeClass.
Simulons simplement l'implémentation de addClass :

var addClass = function (eles, className) {
  if (eles instanceof NodeList) {
    for (var i = 0, length = eles.length; i < length; i++) {
      eles[i].nodeType === 1 && (eles[i].className += (&#39; &#39; + className + &#39; &#39;));
    }
  }
  else if (eles instanceof Node) {
    eles.nodeType === 1 && (eles.className += (&#39; &#39; + className + &#39; &#39;));
  }
  else {
    throw "eles is not a html node";
  }
}
addClass(document.getElementById("p3"), "test");
addClass(document.querySelectorAll(".p"), "test");
Copier après la connexion

Ce code simule simplement l'implémentation de addClass (sans tenir compte de la compatibilité et de la polyvalence pour le moment). Il détermine simplement d'abord le type de nœud, puis). Ajoutez className selon différents types. Pour NodeList ou Node, les appels clients utilisent tous l'interface addClass. C'est l'idée la plus basique du mode combinaison, rendant l'utilisation des parties et de l'ensemble cohérente.

(2) Exemple typique

Nous avons mentionné plus tôt un exemple typique : une commande de produits contient plusieurs sous-commandes de produits, plusieurs sous-commandes de produits. les commandes forment une commande de produits complexe. En raison des caractéristiques du langage Javascript, nous simplifions les trois rôles du modèle de combinaison en deux rôles :
(1) Sous-objet : Dans cet exemple, le sous-objet est le sous-ordre du produit
( 2) Objet combiné : ici il s'agit de la commande totale du produit
Supposons que nous développions un site Web de produits de voyage, qui contient deux sous-produits : billets d'avion et hôtels. Nous définissons les sous-objets comme suit :

<. 🎜>
function FlightOrder() { }
FlightOrder.prototyp.create = function () {
  console.log("flight order created");
}
function HotelOrder() { }
HotelOrder.prototype.create = function () {
  console.log("hotel order created");
}
Copier après la connexion
Le code ci-dessus définit deux classes : classe de commande de billets d'avion et classe de commande d'hôtel, chaque classe a sa propre méthode de création de commande.

Ensuite, nous créons une classe de commande totale :

function TotalOrders() {
  this.orderList = [];
}
TotalOrders.prototype.addOrder = function (order) {
  this.orderList.push(order);
}
TotalOrders.prototype.create = function (order) {
  for (var i = 0, length = this.orderList.length; i < length; i++) {
    this.orderList[i].create();
  }
}
Copier après la connexion
Cet objet comporte principalement 3 membres : liste de commandes, méthode d'ajout de commandes et méthode de création de commandes.

Lorsqu'il est utilisé côté client, il se présente comme suit :

var flight = new FlightOrder();
flight.create();

var orders = new TotalOrders();
orders.addOrder(new FlightOrder());
orders.addOrder(new HotelOrder());
orders.create();
Copier après la connexion
L'appel client montre deux manières, l'une consiste à créer une seule commande de billets et l'autre à créer plusieurs commandes, mais en fin de compte, les deux sont créés via la méthode create, il s'agit d'un scénario d'application très typique du mode combinaison.

Résumé Le mode combinaison n'est pas difficile à comprendre. Il résout principalement le problème de cohérence dans l'utilisation d'objets uniques et d'objets combinés. C'est un bon candidat pour utiliser le modèle Composite si vos objets ont une structure hiérarchique claire et que vous souhaitez travailler avec eux de manière uniforme. Dans le développement Web, ce type de structure hiérarchique est très courant et convient très bien à l'utilisation du mode combinaison, notamment pour JS. Il n'est pas nécessaire de s'en tenir à la forme des langages orientés objet traditionnels et aux caractéristiques du JS. le langage peut être utilisé de manière flexible pour obtenir une cohérence partielle et globale.
(1) Scénarios d'utilisation du mode combinaison Utilisez le mode combinaison uniquement lorsque vous rencontrez les deux situations suivantes
A. Une collection d'objets avec une certaine structure hiérarchique (la structure spécifique est en cours de développement Impossible de déterminer)
B. J'espère effectuer une opération sur ces objets ou certains d'entre eux
(2) Inconvénients du mode combinaisonCar toute opération sur l'objet combiné affectera tous les sous- objets Appelle la même opération, il y aura donc des problèmes de performances lorsque la structure combinée est volumineuse. De plus, lorsque vous utilisez le mode combiné pour encapsuler du HTML, vous devez choisir les balises appropriées. Par exemple, le tableau ne peut pas être utilisé en mode combiné et les nœuds feuilles ne sont pas évidents

Ce qui précède est ce que j'ai compilé pour tout le monde. j'espère que cela sera utile à tout le monde à l'avenir.

Articles associés :

L'application du motif d'apparence de façade dans les modèles de conception en développement JavaScript (avancé)

Interprétation détaillée dans Méthodes pour implémenter le modèle d'adaptateur dans les modèles de conception en JavaScript (tutoriel graphique)

Résumé de l'application du modèle d'adaptateur Adaptateur dans la programmation de modèles de conception JavaScript (tutoriel graphique)

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

La différence entre les modèles de conception et les modèles architecturaux dans le framework Java La différence entre les modèles de conception et les modèles architecturaux dans le framework Java Jun 02, 2024 pm 12:59 PM

Dans le framework Java, la différence entre les modèles de conception et les modèles architecturaux réside dans le fait que les modèles de conception définissent des solutions abstraites aux problèmes courants de conception de logiciels, en se concentrant sur l'interaction entre les classes et les objets, tels que les modèles d'usine. Les modèles architecturaux définissent la relation entre les structures et les modules du système, en se concentrant sur l'organisation et l'interaction des composants du système, tels que l'architecture en couches.

Analyse du modèle de décorateur dans les modèles de conception Java Analyse du modèle de décorateur dans les modèles de conception Java May 09, 2024 pm 03:12 PM

Le modèle décorateur est un modèle de conception structurelle qui permet l’ajout dynamique de fonctionnalités d’objet sans modifier la classe d’origine. Il est mis en œuvre grâce à la collaboration de composants abstraits, de composants concrets, de décorateurs abstraits et de décorateurs concrets, et peut étendre de manière flexible les fonctions de classe pour répondre aux besoins changeants. Dans cet exemple, des décorateurs de lait et de moka sont ajoutés à Espresso pour un prix total de 2,29 $, démontrant la puissance du modèle de décorateur pour modifier dynamiquement le comportement des objets.

Analyse de cas pratique du modèle de conception PHP Analyse de cas pratique du modèle de conception PHP May 08, 2024 am 08:09 AM

1. Modèle d'usine : séparez la création d'objets et la logique métier, et créez des objets des types spécifiés via des classes d'usine. 2. Modèle d'observateur : permet aux objets sujets d'informer les objets observateurs de leurs changements d'état, obtenant ainsi un couplage lâche et un modèle d'observateur.

Comment les modèles de conception gèrent les défis de maintenance du code Comment les modèles de conception gèrent les défis de maintenance du code May 09, 2024 pm 12:45 PM

Les modèles de conception résolvent les problèmes de maintenance du code en fournissant des solutions réutilisables et extensibles : Modèle d'observateur : permet aux objets de s'abonner aux événements et de recevoir des notifications lorsqu'ils se produisent. Factory Pattern : fournit un moyen centralisé de créer des objets sans recourir à des classes concrètes. Modèle Singleton : garantit qu'une classe n'a qu'une seule instance, qui est utilisée pour créer des objets accessibles globalement.

L'utilisation merveilleuse du modèle d'adaptateur dans les modèles de conception Java L'utilisation merveilleuse du modèle d'adaptateur dans les modèles de conception Java May 09, 2024 pm 12:54 PM

Le modèle Adaptateur est un modèle de conception structurelle qui permet à des objets incompatibles de fonctionner ensemble. Il convertit une interface en une autre afin que les objets puissent interagir de manière fluide. L'adaptateur d'objet implémente le modèle d'adaptateur en créant un objet adaptateur contenant l'objet adapté et en implémentant l'interface cible. Dans un cas pratique, grâce au mode adaptateur, le client (tel que MediaPlayer) peut lire des médias au format avancé (tels que VLC), bien qu'il ne prenne lui-même en charge que les formats multimédias ordinaires (tels que MP3).

Modèles de conception PHP : développement piloté par les tests en pratique Modèles de conception PHP : développement piloté par les tests en pratique Jun 03, 2024 pm 02:14 PM

TDD est utilisé pour écrire du code PHP de haute qualité. Les étapes comprennent : l'écriture de cas de test, la description des fonctionnalités attendues et leur échec. Écrivez du code de manière à ce que seuls les cas de test réussissent sans optimisation excessive ni conception détaillée. Une fois les cas de test réussis, optimisez et refactorisez le code pour améliorer la lisibilité, la maintenabilité et l’évolutivité.

Application des modèles de conception dans le cadre Guice Application des modèles de conception dans le cadre Guice Jun 02, 2024 pm 10:49 PM

Le framework Guice applique un certain nombre de modèles de conception, notamment : Modèle Singleton : garantir qu'une classe n'a qu'une seule instance via l'annotation @Singleton. Modèle de méthode d'usine : créez une méthode d'usine via l'annotation @Provides et obtenez l'instance d'objet lors de l'injection de dépendances. Mode stratégie : encapsulez l'algorithme dans différentes classes de stratégie et spécifiez la stratégie spécifique via l'annotation @Named.

Quels sont les avantages et les inconvénients de l'utilisation de modèles de conception dans le framework Java ? Quels sont les avantages et les inconvénients de l'utilisation de modèles de conception dans le framework Java ? Jun 01, 2024 pm 02:13 PM

Les avantages de l'utilisation de modèles de conception dans les frameworks Java incluent : une lisibilité, une maintenabilité et une évolutivité améliorées du code. Les inconvénients incluent la complexité, la surcharge de performances et la courbe d'apprentissage abrupte due à une utilisation excessive. Cas pratique : Le mode proxy permet de charger des objets paresseusement. Utilisez les modèles de conception à bon escient pour tirer parti de leurs avantages et minimiser leurs inconvénients.

See all articles