La stratégie est un modèle de comportement d'objet dans le modèle de conception.
Stratrgy est largement utilisé. .
Ici, nous prenons la substitution de la chaîne comme exemple. Il peut y avoir plusieurs façons de remplacer les variables qu'il contient, en fonction des exigences de l'utilisateur, nous devons donc préparer plusieurs ensembles d'alternatives de caractères variables.
Tout d'abord, nous créons un reptemple de classe abstrait pour définir certaines variables et méthodes communes:
La copie de code est la suivante:
Classe abstraite publique Reptemple {
String protégé oldString = "";
public void SetoldString (String oldString) {
this.oldString = oldString;
}
Neug de chaîne protégé = "";
public String getNewString () {
retour de la nouvelle;
}
Public Abstract void remplace () lève une exception;
}
Il existe une méthode abstraite abstraite dans Reptemple qui doit être clairement héritée, et ce remplacement est en fait une méthode spécifique qui le remplace.
Nous avons maintenant deux alternatives de caractère:
1. Remplacer AAA dans le texte par BBB;
2. Remplacez AAA dans le texte par CCC.
Les classes correspondantes sont ReptempuleOne et Reptempruletwo:
La copie de code est la suivante:
classe publique ReptempruleOne étend RepTemple {
public void remplace () lève l'exception {
// RemplaceFirst est une nouvelle fonctionnalité de JDK1.4 Newsring = OldString.replaceFirst ("AAA", "BBBB")
System.out.println ("Ceci est remplacé un");
}
}
La copie de code est la suivante:
classe publique Repteletwo étend Reptemple {
public void remplace () lève l'exception {
Newsring = OldString.replaceFirst ("AAA", "CCC")
System.out.println ("Ceci est remplacé deux");
}
}
Étape 2: Nous devons établir une classe de solution d'algorithme pour fournir au client la possibilité de sélectionner librement les algorithmes.
La copie de code est la suivante:
classe publique reptemprulesolve {
Stratégie de Rempleple privé;
Public Reptemprulesolve (Règle Reptemple) {
this.strategy = règle;
}
public String getNewContext (site Site, String OldString) {
Retour Strategy.replace (Site, OldString);
}
public void changolgorithm (repTEMPRULE NewAlgorithm) {
stratégie = newalgorithme;
}
}
L'appel est le suivant:
La copie de code est la suivante:
Test de classe publique {
......
public void testreplace () {
// Utilisez le premier ensemble d'alternatives RepTempRulesolve Solver = new Remplemprulesolve (new repTemplelesImple ());
solver.getNewContext (site, contexte);
// Utilisez le deuxième ensemble de solvers = new Remplemprulesolve (new repTEMPruletwo ());
solver.getNewContext (site, contexte);
}
.....
}
Nous avons atteint l'objectif de changer librement des algorithmes pendant le fonctionnement.
En fait, la partie principale de la stratégie entière est l'utilisation de classes abstraites.
La stratégie et l'usine sont similaires. Factory se concentre sur la création d'objets.
La stratégie convient aux occasions suivantes:
1. Enregistrer le fichier dans différents formats;
2. Compressez les fichiers avec différents algorithmes;
3. Intercepter les images avec différents algorithmes;
4. Sortir des graphiques des mêmes données dans différents formats, tels que des courbes ou des barres de diagramme de blocs.