Maison >Java >javaDidacticiel >Une étude approfondie du modèle de stratégie des modèles de conception Java
Le modèle de stratégie est un modèle de conception qui permet des changements dynamiques dans les algorithmes ou les comportements en leur permettant de changer indépendamment des objets clients. Ce modèle comprend les rôles Contexte, Stratégie et ConcreteStrategy. Dans un cas pratique, cela peut nous aider à créer des applications qui utilisent différents algorithmes pour calculer les notes des étudiants. Les avantages du modèle Strategy incluent la flexibilité, le découplage, l’évolutivité et la réutilisabilité. Il convient aux situations dans lesquelles le système dispose de plusieurs façons d'effectuer des tâches, l'algorithme ou le comportement doit être modifié de manière dynamique au moment de l'exécution et le couplage du code client avec l'implémentation spécifique de l'algorithme ou du comportement doit être évité.
Le modèle de stratégie est un modèle de conception qui permet à un algorithme ou à un comportement de changer indépendamment de l'objet client, de sorte que l'algorithme ou le comportement peuvent interagir les uns avec les autres au moment de l’exécution du changement. Ce modèle offre de la flexibilité, permettant de modifier dynamiquement le comportement de l'application sans modifier le code client.
Le modèle de stratégie se compose généralement des rôles suivants :
Considérons une application qui utilise différents algorithmes pour calculer les notes des élèves. Nous pouvons utiliser Strategy Pattern pour réaliser ce genre de fonctionnalité :
// Context (上下文) public class StudentGradingContext { private GradingStrategy strategy; public StudentGradingContext(GradingStrategy strategy) { this.strategy = strategy; } public double calculateGrade(double score) { return strategy.calculateGrade(score); } } // Strategy (策略) public interface GradingStrategy { double calculateGrade(double score); } // ConcreteStrategy (具体策略) public class SimpleGradingStrategy implements GradingStrategy { @Override public double calculateGrade(double score) { return score; } } // ConcreteStrategy (具体策略) public class WeightedGradingStrategy implements GradingStrategy { private double weight; public WeightedGradingStrategy(double weight) { this.weight = weight; } @Override public double calculateGrade(double score) { return score * weight; } } // Client (客户端) public class Client { public static void main(String[] args) { StudentGradingContext context = new StudentGradingContext(new SimpleGradingStrategy()); double grade = context.calculateGrade(85.0); System.out.println("Grade: " + grade); context = new StudentGradingContext(new WeightedGradingStrategy(0.8)); grade = context.calculateGrade(90.0); System.out.println("Weighted Grade: " + grade); } }
Sortie :
Grade: 85.0 Weighted Grade: 72.0
Scénarios d'utilisation :
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!