Dieser Artikel fasst die Strategie zusammen. Laut Wikipedia "wird es möglich sein, den Algorithmus auf verschiedene Arten zu ändern, während er vom Benutzer unabhängig ist." Referenz: Strategiemuster
** Hauptcharaktere **
NO | Name | Rolle |
---|---|---|
1 | Kontext | Instanziieren Sie eine Strategie |
2 | Strategie | Algorithmusschnittstelle |
3 | Konkrete Strategieklasse | Implementierung des Algorithmus |
Es wird gesagt, dass der Algorithmus unabhängig vom Benutzer ist, aber die Verarbeitungsgruppen, die ersetzt werden können, werden von der Schnittstelle ausgeblendet und detailliert zusammengefasst. Lokalisieren Sie den Einflussbereich, indem Sie ihn bei Bedarf ersetzen.
** Implementiere das Muster ** Es wird vorausgesetzt, dass das automatische Ticket-Gate am Bahnhof verwendet wird. Das Strategiemuster implementiert den Vorgang des Durchlaufens von drei Arten von Ticketschaltern: "kontaktlose IC-Karten-Ticketschalter (Suica, ICOCA usw.)", "Transfer-Ticketschalter" und "Ticket-Ticketschalter".
** Strategie **
Strategy.java
interface Strategy {
void pass();
}
** Konkrete Strategieklasse **
ConcreteNonContactTurnstile.java
class ConcreteNonContactTurnstile implements Strategy {
public void pass() {
System.out.println("Set And Touch!");
}
}
ConcreteTicketTurnstile.java
class ConcreteTicketTurnstile implements Strategy {
public void pass() {
System.out.println("Ticket accept");
}
}
ConcreteTransferTurnstile.java
class ConcreteTransferTurnstile implements Strategy {
public void pass() {
System.out.println("Transfer Line!");
}
}
Kontext
ContextStation.java
class ContextStation {
Strategy strategy;
public ContextStation(Strategy strategy) {
this.strategy = strategy;
}
public void pass() {
strategy.pass();
}
}
** Ausführungsklasse **
Main.java
class Main {
public static void main(String[] args) {
ContextStation contextStation;
contextStation = new ContextStation(new ConcreteNonContactTurnstile());
contextStation.pass();
}
}
Ergebnis
Set And Touch!
Wie oben erwähnt, abstrahieren wir ähnliche Verarbeitungsgruppen, indem wir eine Schnittstelle implementieren. Wir instanziieren die folgenden Klassen in der Strategie über eine Klasse in der Rolle des Kontexts, die einen Verweis auf diese Schnittstelle enthält. Zum Zeitpunkt der Implementierung besteht der Zweck dieses Musters darin, den Verarbeitungsinhalt mit hoher Geschwindigkeit zu ändern, indem der XX-Teil der Hauptklasse "Neue Kontextstation (neuer Beton XX)" ersetzt wird. Wenn Sie einen neuen Typ von Ticket-Gate "bemanntes Ticket-Gate" hinzufügen möchten, können Sie ihn implementieren, indem Sie eine konkrete Klasse einer neuen Strategie hinzufügen und den Teil des oben genannten Musters ersetzen.
Recommended Posts