Der Strategiemodus gehört zum Verhaltensmodus des Objekts. Der Zweck ist es, jeden Algorithmus in eine unabhängige Klasse mit einer gemeinsamen Schnittstelle zu verkapulieren, damit sie sich gegenseitig ersetzen können. Der Strategiemodus ermöglicht es dem Algorithmus, sich zu ändern, ohne den Kunden zu beeinflussen.
Die Struktur des Strategiemodus
Der Strategiemodus ist die Verpackung des Algorithmus. Der Strategiemodus verpackt normalerweise eine Reihe von Algorithmen in eine Reihe von strategischen Klassen als Unterklasse der abstrakten strategischen Klasse. In einem Satz ist es: "Bereiten Sie eine Reihe von Algorithmen vor und verkapseln Sie jeden Algorithmus, damit sie ausgetauscht werden können." Die Struktur der Strategiemuster wird durch einen Duft erklärt.
Dieses Modell umfasst drei Rollen:
Quellcode
Umweltcharakter
Public Class Context {// Das Objekt einer bestimmten Strategie -Strategie -Strategie; ;} / *** Strategiemethode* / public void contextInterface () {Strategy.Strategyiinterface ();}}Zusammenfassung Strategie
Öffentliche Schnittstelle Strategie { / *** Strategische Methode* / public void StrategyInterface ();}Spezifische Strategie
Öffentliche Klasse Concretestrategya implementiert Strategie {@Override public void StrategyIinTerface () {// verwandte Business} öffentliche Klasse Concretestrategyb implementiert {@Override public void strategyInterface () {// verwandte Business} Public Class Concretestrategyc Implements Strategy {@Override öffentliche void void Strategie (StrategyInterface ( ) {// verwandtes Geschäft}}} Analysieren Sie den Java -Quellcode nach strategischem Modus
Haftungsausschluss: Hier ist die Reflexion des Java-Quellcode-Analyse-Strategie-Modus im Implementierungscode Java Collection Framework
Im Java -Sammlungs -Framework wird beim Erstellen einer Karte oder des Sets in den Komparatorvergleich eingeführt, und der Parameter der statischen Methode der Sammlung der Sammlung der Sammlung wird zur Sortierung verwendet.
Einfacher Anrufcode:
Java.util.*; add ("Bululu"); ;}}Nach der Verwendung der Methode von Collections.reverSerenter (), um einen Komparator zu implementieren, rufen Sie die Sammlung (Liste, R) an, um den Vergleiche in diese Methode zum Sortieren zu übergeben.
Public static <t> void sortieren .Listotrator ();
Array.Sort (A, Vergleiche) c);
public static <t> void sortieren (t [] a, vergleicher <? super t> c) {if (LegacyMergeSort.UserRequested) LegacyMergeSort (a, c); void sortieren (t [] a, vergleicher <? super t> c) {sortieren (a, 0, a.länge, c);} / ** in einem zukünftigen Relais entfernt werden. <? A.Length, 0, c);}
Folgen Sie weiter:
Private static void mergesort (Object [] src, Objekt [] dest, int niedrig, int hoch, int orient, vergleicher) ++) für (int j = i; j> niedrig && cmpare (dest [j-1], dest [j])> 0; j-) j, j-1); Dest in Src Int Destlow = niedrig; C); (SRC [MID-1], SRC [MID]) <= 0) {System.ArrayCopy (SRC, Low, Dest, Destlow ,, Länge); (int i = destlow, p = niedrig, q = mid; i <destHigh; i ++) {if (q> = hoch || p <mid && c.comPare (src [p], src [q]) < = 0) dest [i] = src [p ++];
Wählen Sie den Code, der für die Verwendung des Komparators verwendet wird:
// Wenn die Liste sortiert ist, kopieren Sie einfach von SRC nach Dost. ] <) <) = 0) {System.ArrayCopy (SRC, LOW, Destlow, Länge);
Die Compaare -Methode ist hier auch in der Komparatorschnittstelle definiert:
public interface vergleiche <t> {int Compare (t o1, t o2);}
Da dies die allgemeine Implementierung des Komparators ist, wird bei der Ausführung der tatsächlichen Ausführung die Implementierung des Codes auf der Grundlage der spezifischen Implementierungsklasse des Komparators aufgerufen, dh der oben erstellten Vergleichsmethode des umgekehrten Reihenfolge Die Realisierungsmethode ist wie folgt:
public int compare (vergleichbar <objekt> c1, vergleichbares <element> c2) {return c2.comPareto (c1);}