Entwurfsmuster - Strategiemuster

Im Strategiemuster kann ein Klassenverhalten oder sein Algorithmus zur Laufzeit geändert werden. Diese Art von Entwurfsmuster fällt unter Verhaltensmuster.

Im Strategiemuster erstellen wir Objekte, die verschiedene Strategien darstellen, und ein Kontextobjekt, dessen Verhalten je nach Strategieobjekt variiert. Das Strategieobjekt ändert den Ausführungsalgorithmus des Kontextobjekts.

Implementierung

Wir werden eine Strategie- Schnittstelle erstellen , die eine Aktion definiert, und konkrete Strategieklassen, die die Strategie- Schnittstelle implementieren . Kontext ist eine Klasse, die eine Strategie verwendet.

StrategyPatternDemo , unsere Demo-Klasse, verwendet Kontext- und Strategieobjekte, um Änderungen im Kontextverhalten basierend auf der von ihr bereitgestellten oder verwendeten Strategie zu demonstrieren.

Schritt 1

Erstellen Sie eine Schnittstelle.

Strategy.java

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

Schritt 2

Erstellen Sie konkrete Klassen, die dieselbe Schnittstelle implementieren.

OperationAdd.java

public class OperationAdd implements Strategy{
   @Override
   public int doOperation(int num1, int num2) {
      return num1 + num2;
   }
}

OperationSubstract.java

public class OperationSubstract implements Strategy{
   @Override
   public int doOperation(int num1, int num2) {
      return num1 - num2;
   }
}

OperationMultiply.java

public class OperationMultiply implements Strategy{
   @Override
   public int doOperation(int num1, int num2) {
      return num1 * num2;
   }
}

Schritt 3

Erstellen Context - Klasse.

Context.java

public class Context {
   private Strategy strategy;

   public Context(Strategy strategy){
      this.strategy = strategy;
   }

   public int executeStrategy(int num1, int num2){
      return strategy.doOperation(num1, num2);
   }
}

Schritt 4

Verwenden Sie den Kontext , um Verhaltensänderungen zu sehen, wenn die Strategie geändert wird .

StrategyPatternDemo.java

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

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

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

Schritt 5

Überprüfen Sie die Ausgabe.

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