Heim  >  Artikel  >  Web-Frontend  >  Detaillierte Erläuterung der Verwendung des JS-Strategiemusters

Detaillierte Erläuterung der Verwendung des JS-Strategiemusters

php中世界最好的语言
php中世界最好的语言Original
2018-03-23 13:55:591764Durchsuche

Dieses Mal werde ich Ihnen eine detaillierte Erklärung zur Verwendung des JS-Strategiemodus geben. Was sind die Vorsichtsmaßnahmen bei der Verwendung des JS-Strategiemodus?

Konzeptreferenz des Strategiemusters:

In der Softwareentwicklung stoßen wir häufig auf ähnliche Situationen. Es gibt mehrere Algorithmen oder Strategien, um eine bestimmte Funktion zu implementieren Abhängig von der Umgebung oder den Bedingungen werden verschiedene Algorithmen oder Strategien ausgewählt, um diese Funktion zu erfüllen.

Beim Suchen, Sortieren usw. besteht eine gängige Methode darin, sie in einer Klasse fest zu codieren. Wenn Sie mehrere Suchalgorithmen bereitstellen müssen, können Sie diese Algorithmen in eine Klasse schreiben Bei mehreren Methoden entspricht jede Methode einem bestimmten Suchalgorithmus. Natürlich können diese Suchalgorithmen auch in einer einheitlichen Methode gekapselt werden, indem if...else...or case und andere bedingte Urteilsanweisungen ausgewählt werden .

Wir können diese beiden Implementierungsmethoden als harte Codierung bezeichnen. Wenn Sie einen neuen Suchalgorithmus hinzufügen müssen, müssen Sie den Quellcode der gekapselten Algorithmusklasse ändern der Client-Aufrufcode.

Eine große Anzahl von Suchalgorithmen ist in dieser Algorithmusklasse gekapselt. Diese Art von Code ist komplexer und schwieriger zu warten. Wenn wir diese Strategien in den Client integrieren, ist dieser Ansatz noch unerwünschter. Er führt dazu, dass das Client-Programm groß und schwierig zu warten ist. Das Problem wird noch schwerwiegender, wenn eine große Anzahl von Algorithmen zur Auswahl steht.

Beispiele:

1. Reisen: Wir können mehrere Strategien in Betracht ziehen: Sie können Fahrrad fahren, Auto fahren, einen Zug nehmen oder fliegen. Jede Strategie erzielt die gleichen Ergebnisse, nutzt jedoch unterschiedliche Ressourcen.

Wählen Sie eine Strategie basierend auf Kosten, Zeit, Werkzeugen und Zweckmäßigkeit jeder Methode.

2. In einem Einkaufszentrum fand am 1. Mai eine Veranstaltung statt, daher wurde die folgende Rabattstrategie für Buchprodukte basierend auf dem Kaufbetrag entwickelt

10 % Rabatt für Einkäufe über 199 Yuan.
20 % Rabatt für Einkäufe über 399 Yuan
30 % Rabatt für Einkäufe über 599 Yuan;

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();

Ich glaube, dass Sie die Methode beherrschen, nachdem Sie den Fall in diesem Artikel gelesen haben. Weitere spannende Informationen finden Sie in anderen verwandten Artikeln auf der chinesischen PHP-Website.

Empfohlene Lektüre:

So verwenden Sie Datepicker


Detaillierte Erläuterung der Verwendung von High-Level-Komponenten von Mixin


Verwenden der ejsExcel-Vorlage in Vue.js

Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der Verwendung des JS-Strategiemusters. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn