Cet article décrit la définition et l'utilisation des modèles de politique Java. Partagez-le pour votre référence, comme suit:
1. Définition:
Définissez une série d'algorithmes, encapsulez-les un par un et leur permettez d'être remplacés les uns par les autres.
2. Avantages:
(1) Le contexte et la stratégie spécifique sont couplés de manière lâche, donc le contexte n'a besoin que de savoir quelle instance il souhaite utiliser pour implémenter la classe d'interface de stratégie, mais n'a pas besoin de savoir de quelle classe il s'agit.
(2) Le modèle politique répond au principe de l'ouverture et de la fermeture. Lors de l'ajout d'une nouvelle classe spécifique, il n'est pas nécessaire de modifier le code de la classe de contexte. Le contexte peut faire référence à une instance de la nouvelle politique spécifique.
Iii. Exemple:
Ce qui suit est une explication détaillée du modèle de stratégie à travers une question.
Exigences expérimentales:
Xiao ding est un programmeur d'alibaba. Ce jour-là, le chef de projet lui a donné une définition de classe
travailleur de classe publique {int id; Nom de chaîne; en âge;}Xiao ding a vu que ce n'était pas la définition d'un travailleur, y compris l'identification du numéro, le nom, l'âge, etc.
Le directeur a dit que j'ai besoin que vous écriviez une fonction qui peut trouver le plus ancien parmi un groupe de travailleurs. La déclaration de la méthode est (ou quelque chose comme ça):
Travailleur de recherche de travailleurs (Liste <Dorking> Workers);
List<Worker> workers des paramètres sont les données de ce lot de travailleurs. Si le plus ancien travailleur est trouvé, l'objet de travailleur sera retourné. Si les travailleurs n'ont pas de nœuds, retournez NULL.
Répondre:
1. Stratégie
En mode politique, cette interface est nommée Workstrategy (dans des questions spécifiques, ce nom peut être nommé selon des questions spécifiques), et le code est le suivant:
Workstrategy.java
Importer java.util.list; Interface publique Workstrategy {Public Worker AgeAverage (List <Worker> List);}2. Contexte
La politique axée sur le contexte est à la fois une classe axée sur l'interface; Le code est le suivant:
Maxage.java
import java.util.list; public class maxage {workstrategy workstrategy; public void setworkStrategy (Workstrategy workstrategy) {this.workStrategy = workstrategy; } le travailleur public getFindMax (list <Worker> list) {if (Workstrategy! = null) return workstrategy.ageAverage (list); else {return null; }}}3. Stratégies spécifiques
La stratégie spécifique consiste à implémenter la classe d'interface Workstrategy, c'est-à-dire que le travailleur abstrait dans l'interface doit être réécrit.
Méthode AgeAeverage (List <Worker>)
Le code est le suivant:
StrategyMaxage.java
Importer java.util.list; Classe publique StratégieMaxage implémente Workstrategy {@Override Public Worker AgeAverage (List <Worker> List) {int fs [] = new int [list.size ()]; int maxage = 0; pour (int j = 0; j <list.size (); j ++) {fs [j] = list.get (j) .getage (); if (fs [maxage] <= fs [j]) {maxage = j; }} return list.get (maxage); }}4. Utilisation du mode politique
Application.java
import java.util.arraylist; import java.util.list; application de classe publique {public static void main (String [] args) {list <worker> list = new ArrayList <> (); list.add (nouveau travailleur (1, "Zhang San", 30)); list.add (nouveau travailleur (2, "li si", 40)); list.add (nouveau travailleur (3, "Wang Wu", 33)); Maxage findage = new maxage (); findage.setworkStrategy (new StrategmentMaxage ()); Worker FindW = Findage.getFindMax (liste); System.out.println ("Wulin.com Résultats du test:"); System.out.println ("Le plus ancien travailleur:" + findw.getID () + "" + findw.getName () + "" + findw.getage ()); }} classe de classe {int id; Nom de chaîne; en âge; public int getID () {return id; } public void setid (int id) {this.id = id; } public String getName () {Nom de retour; } public void setName (string name) {this.name = name; } public int getage () {return âge; } public void Setage (int Age) {this.age = age; } Public Worker (int id, nom de chaîne, int age) {super (); this.id = id; this.name = name; this.age = âge; } Public Worker () {super (); // TODO STUD DE CONTRÔTEUR AUTO AUTO}}5. Résultats de l'opération:
Pour plus de contenu lié à Java, les lecteurs qui sont intéressés par ce site peuvent afficher les sujets: "Tutoriel de structure de données Java et d'algorithme", "Résumé des conseils de nœud de Dom Operation Java", "Résumé du fichier Java et des conseils d'opération de répertoire" et "Résumé des conseils d'opération Java Cache"
J'espère que cet article sera utile à la programmation Java de tous.