Strategie ist ein Objektverhaltensmuster im Entwurfsmuster.
Stratrgy wird häufig verwendet. .
Hier nehmen wir als Beispiel eine String -Substitution. Es kann möglicherweise mehrere Möglichkeiten geben, die darin enthaltenen Variablen zu ersetzen, abhängig von den Anforderungen des Benutzers. Daher müssen wir mehrere Mengen von Alternativen variabler Zeichen vorbereiten.
Zunächst erstellen wir eine abstrakte Klassenreption, um einige häufige Variablen und Methoden zu definieren:
Die Codekopie lautet wie folgt:
public abstract Class RepteMprule {
Protected String oldstring = "";
public void setoldString (String Oldstring) {
this.oldString = OldString;
}
Protected String NewString = "";
public String getNewstring () {
Rückgabe der Newstring;
}
öffentliche abstrakte void ersetzen () löst Ausnahme aus;
}
Es gibt eine abstrakte Methode, die in RepteMprus abstrakt ist, die klar vererbt werden muss, und dieses Ersatz ist eigentlich eine spezifische Methode, die sie ersetzt.
Wir haben jetzt zwei Charakteralternativen:
1. Ersetzen Sie AAA im Text durch BBB;
2. Ersetzen Sie AAA im Text durch CCC.
Die entsprechenden Klassen sind RepteMPRUleone und RepteMpuletwo:
Die Codekopie lautet wie folgt:
öffentliche Klasse RepteMPuleOne erweitert RepteMprole {
public void ersatz () löst Ausnahme {aus {
// ErsatzFirst ist ein neues Merkmal von JDK1.4 NewString = oldstring.replaceFirst ("AAA", "BBBB").
System.out.println ("Dies ist ersetzt");
}
}
Die Codekopie lautet wie folgt:
öffentliche Klasse RepteMpuletwo erweitert RepteMPRULE {
public void ersatz () löst Ausnahme {aus {
NewString = OldString.ReplaceFirst ("AAA", "CCC")
System.out.println ("Dies ist ersetzt zwei");
}
}
Schritt 2: Wir müssen eine Algorithmus -Lösungsklasse einrichten, um dem Kunden die Möglichkeit zu geben, Algorithmen frei auszuwählen.
Die Codekopie lautet wie folgt:
öffentliche Klasse RepteMprulesolve {
private Reptestrule -Strategie;
public repteMprulesolve (RepteMprole -Regel) {
this.strategy = Regel;
}
public String getNewContext (Site Site, String OldString) {
Return Strategy.replace (Site, OldString);
}
public void changemalgorithmus (RepteMprule Newalgorithmus) {
Strategie = Newalgorithmus;
}
}
Der Anruf lautet wie folgt:
Die Codekopie lautet wie folgt:
öffentliche Klassen -Test {
......
public void Testreplace () {
// Verwenden Sie den ersten Satz von Alternativen RepteMprulesolve Solver = New RepteMprulesolve (New RepteMpruleSimple ());
Solver.getNewContext (Site, Kontext);
// Verwenden Sie den zweiten Satz von Solvers = New RepteMprulesolve (neuer RepteMpuletwo ());
Solver.getNewContext (Site, Kontext);
}
.....
}
Wir haben das Ziel erreicht, Algorithmen während des Betriebs frei zu wechseln.
Tatsächlich ist der Kernteil der gesamten Strategie die Verwendung abstrakter Klassen.
Strategie und Fabrik sind ähnlich. Fabrik konzentriert sich auf das Erstellen von Objekten.
Die Strategie ist für die folgenden Gelegenheiten geeignet:
1. Speichern Sie die Datei in verschiedenen Formaten;
2. Komprimieren Sie Dateien mit unterschiedlichen Algorithmen;
3.. Abfangen Bilder mit unterschiedlichen Algorithmen;
4. Ausgabediagramme derselben Daten in verschiedenen Formaten wie Kurven oder Blockdiagrammbalken.