Maison  >  Article  >  interface Web  >  Explication détaillée de l'utilisation du modèle de stratégie JS

Explication détaillée de l'utilisation du modèle de stratégie JS

php中世界最好的语言
php中世界最好的语言original
2018-03-23 13:55:591820parcourir

Cette fois, je vais vous apporter une explication détaillée de l'utilisation du mode stratégie JS. Quelles sont les précautions lors de l'utilisation du mode stratégie JS. Voici des cas pratiques, jetons un coup d'oeil.

Référence conceptuelle du modèle de stratégie :

Nous rencontrons souvent des situations similaires dans le développement de logiciels. Il existe plusieurs algorithmes ou stratégies pour implémenter une certaine fonction que nous pouvons utiliser en fonction. l'environnement ou les conditions, différents algorithmes ou stratégies sont sélectionnés pour remplir cette fonction.

Par exemple, pour la recherche, le tri, etc., une méthode courante consiste à le coder en dur dans une classe. Si vous devez fournir plusieurs algorithmes de recherche, vous pouvez écrire ces algorithmes dans une classe. plusieurs méthodes, chaque méthode correspond à un algorithme de recherche spécifique ; bien sûr, ces algorithmes de recherche peuvent également être encapsulés dans une méthode unifiée, via if...else...or case et d'autres déclarations de jugement conditionnelles choisissez .

Nous pouvons appeler ces deux méthodes d'implémentation du codage en dur. Si vous devez ajouter un nouvel algorithme de recherche, vous devez modifier le code source de la classe d'algorithme encapsulée pour changer l'algorithme de recherche, vous devez également modifier ; le code d'appel du client.

Un grand nombre d'algorithmes de recherche sont encapsulés dans cette classe d'algorithmes. Ce type de code sera plus complexe et difficile à maintenir. Si nous incluons ces stratégies sur le client, cette approche est encore plus indésirable. Elle rendra le programme client volumineux et difficile à maintenir. Le problème deviendra plus grave s'il existe un grand nombre d'algorithmes parmi lesquels choisir.

Exemples :

1. Voyager : Nous pouvons avoir plusieurs stratégies à envisager : rouler à vélo, en voiture, prendre le train ou prendre l'avion. Chaque stratégie obtient les mêmes résultats, mais utilise des ressources différentes.

Choisissez une stratégie basée sur le coût, le temps, les outils et la commodité de chaque méthode.

2. Dans un centre commercial, un événement a eu lieu le 1er mai, la stratégie de remise suivante a donc été élaborée pour les produits de livres en fonction du montant de l'achat

10 % de réduction pour les achats supérieurs à 1. 199 yuans.
2. 20 % de réduction pour les achats supérieurs à 399 yuans
3. 30 % de réduction pour les achats supérieurs à 599 yuans

function BookStrategy() {
 this.calcPrice = function( price ) {
 console.log("未打折 = " + price);
 }
}
function BookCalc9Strategy() {
 this.calcPrice = function( price ) {
 console.log("原价是:"+ price +";打9折后:" + (price * 0.9));
 }
}
function BookCalc8Strategy() {
 this.calcPrice = function( price ) {
 console.log("原价是:"+ price +";打8折后:" + (price * 0.8));
 }
}
function BookCalc7Strategy() {
 this.calcPrice = function( price ) {
 console.log("原价是:"+ price +";打7折后:" + (price * 0.7));
 }
}
function PriceCalc( _strategy ) {
 this.strategy = _strategy;
 this.getPrice = function( price ) {
 return this.strategy.calcPrice( price );
 }
}
function Client() {
 var price = 100;
 var priceCalc = null;
 if ( 199 <= price && price < 399 ) {
 priceCalc = new PriceCalc(new BookCalc9Strategy());
 } else if ( 399 <= price && price < 599 ) {
 priceCalc = new PriceCalc(new BookCalc8Strategy());
 } else if ( 599 <= price ) {
 priceCalc = new PriceCalc(new BookCalc7Strategy());
 } else {
 priceCalc = new PriceCalc(new BookStrategy());
 }
 priceCalc.getPrice(price);
}
Client();

Exécuter les résultats :

Je pense que vous maîtrisez la méthode après avoir lu le cas dans cet article. Pour des informations plus intéressantes, veuillez prêter attention aux autres articles connexes sur le site Web chinois de php !

Lecture recommandée :

Comment utiliser datepicker

Explication détaillée de l'utilisation des composants de haut niveau de mixin

Utilisation du modèle ejsExcel dans Vue.js

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:
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