Les exemples de cet article partagent avec vous le modèle de stratégie Java pour votre référence. Le contenu spécifique est le suivant
1. Le modèle de stratégie est un modèle relativement simple, également appelé modèle de politique.
La définition est la suivante:
Définissez une famille d'algorithmes, encapsuler chacun et les rendre interchangeables.
(Définissez un ensemble d'algorithmes, encapsuler chaque algorithme et les rendre interchangeables.)
Le diagramme de classe générale du modèle de politique est le suivant:
Trois rôles du mode stratégie:
● Le rôle d'encapsulation du contexte, également connu sous le nom de rôle de contexte, joue un rôle de l'encapsulation qui relie le passé et l'avenir, bloque l'accès direct à des modules de haut niveau aux politiques et aux algorithmes, et résume les changements possibles.
● Stratégie abstraite Strategy Role Strategy et Algorithm Family Abstraction, généralement une interface, définit les méthodes et les attributs que chaque stratégie ou algorithme doit avoir,
● Stratégie concrète Le rôle de stratégie spécifique implémente les opérations dans des politiques abstraites, et cette classe contient des algorithmes spécifiques.
Le modèle de stratégie consiste à adopter une politique spécifique dans le constructeur du rôle encapsulé, puis à exécuter cette politique.
Le code source général du modèle de politique est le suivant:
classe publique test3 {public static void main (String [] args) {// déclare une stratégie de stratégie spécifique = new Concretestrategy1 (); // Déclarer le contexte Context Context = nouveau contexte (stratégie); // Exécuter le contexte de la méthode encapsulée.DoanyThinig (); }} Stratégie d'interface {// Règles arithmétiques du mode politique public void dosomething (); } classe Concretestrategy1 implémente la stratégie {public void dosomething () {System.out.println ("Règles arithmétiques pour la stratégie spécifique 1"); }} classe Concretestrategy2 implémente la stratégie {public void doSomething () {System.out.println ("Règles arithmétiques pour la stratégie spécifique 2"); }} Classe Context {// Stratégie abstraite stratégie privée stratégie; // Constructeur définit des stratégies spécifiques contexte public (stratégie _strategy) {this.strategy = _strategy; } // Méthode de stratégie encapsulée public void doanythinig () {this.strategy.dosomething (); }}Avantages du modèle de stratégie:
● L'algorithme peut être commuté librement
Ceci est défini par le modèle politique lui-même. Tant que la stratégie abstraite est mise en œuvre, elle devient un membre de la famille des politiques, en le encapsulant grâce à des rôles d'encapsulation, en veillant à ce qu'il soit "librement commutable" soit fourni au monde extérieur.
● Évitez d'utiliser plusieurs conditions pour juger
S'il n'y a pas de modèle de politique, réfléchissons à ce à quoi cela ressemblerait? Une famille de stratégie a 5 algorithmes de stratégie. Vous devez utiliser la stratégie A à un moment donné, puis utiliser la stratégie A à un moment donné.
Comment concevoir la stratégie B? Utiliser plusieurs instructions conditionnelles? Les instructions multi-conditions ne sont pas faciles à entretenir et la probabilité d'erreurs est considérablement améliorée. Après avoir utilisé le mode politique, d'autres modules peuvent décider quelle stratégie adopter. L'interface d'accès fournie par la famille des politiques à l'extérieur est la classe d'encapsulation, qui simplifie les opérations et évite le jugement de déclaration conditionnelle.
● Bonne évolutivité
Cela n'a même pas besoin de dire ce qu'il a à faire, car c'est trop évident. Il est trop facile d'ajouter une stratégie au système existant. Implémentez simplement l'interface et il n'est pas nécessaire de modifier autre chose. Il est similaire à un plug-in qui peut être démonté à plusieurs reprises, qui est considérablement conforme au principe OCP.
Inconvénients des modèles politiques:
● Le nombre de classes politiques augmente. Chaque stratégie est une classe, et la possibilité de réutilisation est très petite et le nombre de classes augmente.
● Tous les cours de stratégie doivent être exposés
Utilisez des scénarios pour le mode politique:
● Plusieurs classes n'ont que des scénarios légèrement différents dans les algorithmes ou les comportements.
● Scénarios où l'algorithme doit être commuté librement.
● Scénarios où les règles d'algorithme doivent être bloquées.
2. Extension du mode politique - Énumération politique
L'énumération politique est définie comme suit:
● Il s'agit d'une énumération.
● Il s'agit d'une énumération de modèles de stratégie concentrés.
Les exemples sont les suivants:
Question: Entrez 3 paramètres et effectuez des opérations d'addition et de soustraction. Deux des paramètres sont de type int et le paramètre restant est le type de chaîne. Seuls deux symboles "+" et "-" peuvent être sélectionnés. Ne considérez aucune vérification complexe. Ce que nous faisons, c'est un test de boîte blanche, et ce que nous entrons, c'est le type INT standard et le type de chaîne conforme.
import java.util.arrays; classe publique test3 {public static void main (String [] args) {// Les deux paramètres entrés sont le nombre int a = Integer.Parseint (args [0]); String symbol = args [1]; // le symbole int b = Integer.ParseInt (args [2]); System.out.println ("Le paramètre d'entrée est:" + arrays.tostring (args)); System.out.println ("Le résultat en cours est:" + a + symbole + b + "=" + calculator.add.exec (a, b)); }} Calculatrice enum {// Ajouter l'opération add ("+") {public int exec (int a, int b) {return a + b; }}, // Opération de soustraction sub ("-") {public int exec (int a, int b) {return a - b; }}; String value = ""; // Définir le type de valeur du membre Calculatrice privée (String _Value) {this.value = _value; } // Obtenez la valeur des membres d'énumération publique String getValue () {return this.value; } // Déclare une fonction abstraite publique Résumé Int Exec (int a, int b); }Ce qui précède est tout le contenu de cet article. J'espère que cela sera utile à l'apprentissage de tous et j'espère que tout le monde soutiendra davantage Wulin.com.