introduire
La méthode du modèle définit le squelette d'un algorithme opérationnel et retarde certaines étapes vers une sous-classe. La méthode du modèle permet à la sous-classe de redéfinir certaines étapes spécifiques de l'algorithme sans modifier la structure de l'algorithme.
Les méthodes de modèle sont une technique de base pour la réutilisation du code, ce qui est particulièrement important dans les bibliothèques de classe car elles extraient le comportement public dans les bibliothèques de classe. La méthode du modèle conduit à une structure de contrôle inverse, qui est la légendaire "loi hollywoodienne", c'est-à-dire "ne nous cherchez pas, nous vous chercherons", qui fait référence à la classe parent appelant le fonctionnement d'une classe, et non dans l'autre sens. Les manifestations concrètes sont des classes abstraites (et des méthodes abstraites) dans les langages de programmation orientés objet, ainsi que des sous-classes qui héritent de la classe abstraite (et des méthodes abstraites).
texte
Par exemple, la fabrication du thé et du café a les mêmes étapes, telles que l'ébullition de l'eau, le brassage, le verser dans une tasse, l'ajout de petits ingrédients, etc. Cependant, la méthode de brassage de chaque boisson et les petits ingrédients ajoutés sont différents, nous pouvons donc utiliser la méthode du modèle pour atteindre cette étape principale.
Définissez d'abord les étapes abstraites:
La copie de code est la suivante:
var cafeineBeverage = function () {
};
CaffeineBeverage.prototype.prepareRerecipe = function () {
this.boilwater ();
this.brew ();
this.pourOnCup ();
if (this.CustomerWantsCondiments ()) {
// si vous pouvez ajouter de petits ingrédients, ajouter
this.addCondiments ();
}
};
CaffeineBeverage.prototype.boilwater = function () {
console.log ("Porter l'eau à ébullition!");
};
CaffeineBeverage.prototype.pourOnCup = function () {
console.log ("Mettez la boisson dans la tasse!");
};
CaffeineBeverage.prototype.brew = function () {
lancer une nouvelle erreur ("Cette méthode doit être réécrite!");
};
CaffeineBeverage.prototype.addCondiments = function () {
lancer une nouvelle erreur ("Cette méthode doit être réécrite!");
};
// ajouter de petits matériaux par défaut
CaffeineBeverage.prototype.CustomerWantsCondiments = Function () {
Retour Vrai;
};
Cette fonction étend toutes les étapes de base et les étapes principales du prototype. Le brassage et l'ajout de petits ingrédients ne sont pas mis en œuvre et sont utilisés par la fonction correspondant à la boisson spécifique à implémenter. De plus, l'opportunité d'ajouter de petits ingrédients (CustomerwantsConds) renvoie vrai par défaut. Cette valeur peut être réécrite lors de la réécriture de la sous-fonction.
Les deux fonctions suivantes sont les fonctions correspondantes pour brasser du café et brasser du thé:
La copie de code est la suivante:
// Faites du café
var café = fonction () {
CafeineBeverage.Apply (this);
};
Coffee.prototype = new CaffeineBeverage ();
Coffee.prototype.Brew = function () {
console.log ("Je veux verser du café de la cafetière!");
};
Coffee.prototype.addCondiments = fonction () {
console.log ("ajouter du sucre et du lait");
};
Coffee.prototype.CustomerWantsCondiments = Function () {
Retour confirme ("Voulez-vous ajouter du sucre et du lait?");
};
// faire des feuilles de thé
var thé = fonction () {
CafeineBeverage.Apply (this);
};
Thé.prototype = new CafeineBeverage ();
Thé.prototype.brew = function () {
console.log ("puuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
};
Thé.prototype.addCondiments = fonction () {
console.log ("Ajouter du citron!");
};
The.prototype.CustomerWantsCondiments = function () {
Retour confirme ("Voulez-vous ajouter du citron?");
};
De plus, l'utilisation de Confirm permet aux utilisateurs de choisir d'ajouter de petits ingrédients par eux-mêmes, ce qui est très bien, n'est-ce pas?
Résumer
La méthode du modèle est appliquée aux situations suivantes:
1. Implémentez la partie immuable d'un algorithme à un moment donné et laissez le comportement mutable aux sous-classes pour l'implémenter
2. Le comportement public de chaque sous-classe doit être extrait et concentré dans une classe de parent public pour éviter la duplication du code, et les différences sont séparées en nouvelles opérations. Enfin, remplacez ces différents codes par une méthode de modèle pour phishing ces nouvelles opérations.
3. Extensions de sous-classe de contrôle. La méthode du modèle appelle uniquement l'opération "Hook" à des points spécifiques, de sorte qu'il permet des extensions à ces points.
Contrairement aux modèles de stratégie, les méthodes de modèle utilisent l'héritage pour modifier une partie de l'algorithme, tandis que les modèles de stratégie utilisent les délégués pour modifier l'ensemble de l'algorithme.