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