Description du mode décorateur
Remarque: utilisez une classe pour modifier dynamiquement les objets fonctionnels d'une autre classe avant ou après, et ajoutez-y quelques fonctions supplémentaires; Il s'agit d'une décoration des fonctions d'un objet de classe. La classe décorative et la classe décorée nécessitent la même méthode d'interface d'accès (fonction). Dans les classes dynamiques orientées objet, l'implémentation est généralement limitée par la mise en œuvre de la même interface; La classe décorative doit avoir une référence à la classe décorée, qui est utilisée pour appeler les méthodes de classe décorative correspondantes dans la classe décorative, puis la modifier;
Exemples de scénarios:
1>. Par exemple, lorsque nous portons des vêtements dans nos vies, une chemise, une veste de costume, une paire de pantalons, une cravate et une paire de belles chaussures en cuir; Chaque extra est une décoration pour l'avant ou le corps entier;
2>. Par exemple, nous avons une méthode de fonction dans une classe qui peut être utilisée pour écrire des journaux, qui peuvent être utilisés pour que les utilisateurs puissent se connecter à une telle fonction. Nous devons peut-être obtenir les informations actuelles de l'opérateur avant d'écrire le journal ou d'écrire un journal après la connexion avec succès; Les opérations supplémentaires avant d'écrire le journal sont généralement le but d'écrire des journaux; La rédaction du journal après la journalisation avec succès est également généralement les informations de fonctionnement du processus de journal;
Par conséquent, le mode décorateur est utilisé pour implémenter et les deux fonctionnent de manière similaire; C'est l'expansion du décorateur de l'objet fonctionnel du décorateur, qui est essentiellement la même gamme fonctionnelle de la méthode d'origine;
Code source d'instance
1. Catégorie décorée
La copie de code est la suivante:
fonction wear () {
}
Wear.prototype.shirt = function () {
// porte une chemise
console.log («porter une chemise»);
}
2. Décorateurs
La copie de code est la suivante:
Fonction Decorator (Wear) {
this.wear = us;
}
Décorateur.prototype.shirt = function () {
this.wear.shirt ();
// Après avoir porté une chemise, je remets une cravate
}
3. Comment utiliser
La copie de code est la suivante:
var usure = new wear ();
var décorateur = nouveau décorateur (usure);
décorateur.shirt ();
Cela permet une décoration dynamique étendue de l'objet de fonction de chemise d'usure. Vous n'avez pas besoin de savoir comment la méthode décorative d'origine est effectuée. Sachez simplement quelle est sa fonction, puis sachez quelle est la fonction supplémentaire que nous voulons y ajouter;
Autres instructions
Le motif du décorateur retire vraiment la méthode orientée objet: le principe de l'ouverture aux extensions et de la fermeture en modifications; Toutes les méthodes fonctionnelles souhaitées sont effectuées sans modifier la [usure de classe décorée] et étendre le [décorateur de classe décorateur];
Une caractéristique principale du modèle décorateur est que la référence du décorateur au décorateur afin d'atteindre la décoration non modifiée du décorateur;
Simulation: scène de port d'une chemise d'abord, puis une cravate, puis un costume: le décorateur ci-dessus reste inchangé:
2. Décorateurs:
La copie de code est la suivante:
Fonction Decorator (Wear) {
this.wear = us;
}
Décorateur.prototype.shirt = function () {
this.wear.shirt (); // ne porte que des chemises ici;
}
3. Créez des classes de port de cravate et de port de costume similaires à l'héritage de la sous-classe de décorateur
La copie de code est la suivante:
Fonction Decorator_tie (décorateur) {
this.decorator = décorateur;
}
Décorator_tie.prototype.shirt = function () {
this.decorator.shirt (); // porte une chemise
Console.log («Portez une cravate à nouveau»);
}
fonction décorateur_western (décorateur) {
this.decorator = décorateur;
}
Décorator_western.prototype.shirt = function () {
this.decorator.shirt ();
console.log («porter un costume à nouveau»);
}
Comment utiliser:
La copie de code est la suivante:
// Mettez votre chemise d'abord
var usure = new wear ();
var décorateur = nouveau décorateur (usure);
//decorator.shirt ();
// porte à nouveau une cravate
var tie = new décorator_tie (décorateur);
//tie.shirt ();
// repose sur un costume
var western = nouveau décorateur_western (cravate);
western.shirt ();
Ceci est un simulation d'exemple de vinaigrette et de décoration;