Latest web development tutorials

Strategiemodus

Im Strategie-Modus (Strategy-Muster), eine Klasse handeln, oder der Algorithmus kann zur Laufzeit geändert werden. Diese Art von Entwurfsmustern gehören Verhaltensmuster.

Im Strategie-Modus schaffen wir Objekte und eine Vielzahl von Verhaltensänderung Strategien als Richtlinienobjekt das Kontextobjektdarstellung zu ändern. Richtlinienobjekt, um das Kontext Algorithmus Ausführungsobjekt ändern.

Einführung

Absichten: Die Definition einer Familie von Algorithmen, kapseln jeder sie, und sie austauschbar zu machen.

Vor allem zu lösen: Im Fall von mehreren ähnlichen Algorithmus unter Verwendung von if ... else komplex und schwierig gebracht zu halten.

Wann verwendet man :ein System , viele, viele Kategorien hat und sie nur ihre unmittelbare Verhalten zu unterscheiden.

Wie zu beheben: werden diese Algorithmen in ein Paket eine Klasse willkürlich ersetzt.

Der Schlüsselcode: implementieren die gleiche Schnittstelle.

Anwendungsbeispiele: 1, gute Ideen Zhuge Liang, ist jedes Kit eine Strategie.2, Reisen Art zu reisen, wählen Sie ein Fahrrad zu fahren, mit dem Auto, jede Art zu reisen ist eine Strategie. 3, AWT JAVA Layoutmanager.

Vorteile: 1, kann der Algorithmus frei schalten.2, vermeiden Sie mehrere bedingte verwenden. 3, gute Skalierbarkeit.

Nachteile: 1, erhöht sich die Strategie.2, alle Klassen müssen von Außenpolitik Exposition.

Einsatzszenarien: 1, wenn es ein System , in dem viele Klassen, der Unterschied zwischen ihnen nur in ihrem Verhalten, dann die Strategie Muster verwenden können dynamisch eine Handlung in vielen Verhaltensweisen eines Objekts wählen zu lassen.2 benötigt ein System, um dynamisch einen von mehreren Algorithmen auswählen. 3. Wenn ein Objekt eine Menge Verhalten aufweist, wenn das nicht der richtige Modus ist, hatten diese Handlungen mehrere Bedingungen zu verwenden sind ausgewählte Anweisung zu erreichen.

Hinweis: Wenn die Politik eines Systems von mehr als vier, müssen Sie die Verwendung von Mixed-Mode zu berücksichtigen, um das Problem der Expansionspolitik Klasse zu lösen.

Realisierung

Wir werden eine gut definierte Schnittstelle und Implementierung Aktivitäten des UnternehmensStrategieStrategieStrategie- Schnittstelle erstellen. DerKontextist die Verwendung einer bestimmten Klasse Politik.

StrategyPatternDemo,unsere Demonstration KlassenKontextKontext und Richtlinienobjekte mit Verhalten zu zeigen , wenn es verwendet wird , zu konfigurieren oder die Richtlinienänderung ändern.

Strategie-Muster UML-Diagramm

Schritt 1

Erstellen Sie eine Schnittstelle.

Strategy.java

public interface Strategie {
   public int doOperation (int num1, int num2);
}

Schritt 2

Erstellen von Entity-Klasse, die die Schnittstelle implementiert.

OperationAdd.java

public class OperationAdd implementiert Strategie {
   @Override
   public int doOperation (int num1, int num2) {
      Rückkehr num1 + num2;
   }
}

OperationSubstract.java

public class OperationSubstract implementiert Strategie {
   @Override
   public int doOperation (int num1, int num2) {
      Rückkehr num1 - num2;
   }
}

OperationMultiply.java

public class OperationMultiply implementiert Strategie {
   @Override
   public int doOperation (int num1, int num2) {
      Rückkehr num1 * num2;
   }
}

Schritt 3

Erstellen SieContext- Klasse.

Context.java

public class Kontext {
   Private Strategie Strategie;

   öffentlichen Kontext (Strategie Strategie) {
      this.strategy = Strategie;
   }

   public int executeStrategy (int num1, int num2) {
      Rückkehr strategy.doOperation (num1, num2);
   }
}

Schritt 4

VerwendenKontextzu sehen , wenn sie das Verhalten ändern StrategieStrategie ändert.

StrategyPatternDemo.java

public class StrategyPatternDemo {
   public static void main (String [] args) {
      Context context = neue Context (neue OperationAdd ());		
      System.out.println ( "10 + 5 =" + context.executeStrategy (10, 5));

      context = neue Context (neue OperationSubstract ());		
      System.out.println ( "10 - 5 =" + context.executeStrategy (10, 5));

      context = neue Context (neue OperationMultiply ());		
      System.out.println ( "10 * 5 =" + context.executeStrategy (10, 5));
   }
}

Schritt 5

Stellen Sie sicher, ausgegeben.

10 + 5 = 15
10--5 = 5
10 * 5 = 50