En tant que modèle de conception logicielle, le modèle de stratégie signifie que l'objet a un certain comportement, mais dans différents scénarios, le comportement a différents algorithmes de mise en œuvre. Ce modèle résout le problème de plusieurs algorithmes similaires. Ci-dessous, la complexité. et difficulté de maintenance causée par l'utilisation de "if...else".
Introduction
Intention : Définir une série d'algorithmes, les encapsuler un par un et les rendre accessibles Remplacer l'un l'autre.
Solution principale : lorsqu'il existe plusieurs algorithmes similaires, la complexité et la difficulté de maintenance sont causées par l'utilisation de if...else.
Quand l'utiliser : un système comporte de très nombreuses classes, et ce qui les distingue est leur comportement direct.
Comment résoudre : encapsulez ces algorithmes dans des classes un par un et remplacez-les arbitrairement.
Code clé : implémentez la même interface.
Exemples d'application : 1. Les conseils de Zhuge Liang, chaque conseil est une stratégie. 2. Comment voyager, choisir de faire du vélo ou de prendre une voiture. Chaque façon de voyager est une stratégie. 3. LayoutManager dans JAVA AWT.
Avantages : 1. L'algorithme peut être commuté librement. 2. Évitez d’utiliser plusieurs jugements conditionnels. 3. Bonne évolutivité.
Inconvénients : 1. Les catégories de stratégie augmenteront. 2. Tous les cours de stratégie doivent être exposés au monde extérieur.
Scénarios d'utilisation : 1. S'il existe de nombreuses classes dans un système et que la différence entre elles réside uniquement dans leur comportement, alors l'utilisation du modèle de stratégie peut permettre à un objet de choisir dynamiquement un comportement parmi de nombreux comportements. 2. Un système doit choisir dynamiquement l’un des nombreux algorithmes. 3. Si un objet a de nombreux comportements, sans modèles appropriés, ces comportements doivent être implémentés à l'aide de plusieurs instructions de sélection conditionnelle.
Remarque : si un système dispose de plus de quatre stratégies, vous devez envisager d'utiliser le mode mixte pour résoudre le problème de l'expansion des classes de stratégie.
Implémentation
Nous allons créer une interface Stratégie qui définit l'activité et une classe de stratégie d'entité qui implémente l'interface Stratégie. Le contexte est une classe qui utilise une certaine stratégie.
StrategyPatternDemo, notre classe de démonstration utilise des objets Context et stratégie pour démontrer les changements de comportement de Context lorsque les stratégies qu'il configure ou utilise changent.
Tutoriel recommandé : "PHP"
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!