mode de stratégie
En mode Stratégie (Motif Stratégie), une classe de comportement ou d'un algorithme peut être modifié lors de l'exécution. En mode stratégie, nous créons un objet de contexte représentent des objets et une variété de stratégies de changement de comportement en tant qu'objets politique que le changement. mode d'exécution stratégie de changement des algorithmes objet de contexte.
introduction
Il vise à: définir un ensemble d'algorithmes, les encapsuler un par un, et les rend interchangeables.
La principale solution: Dans une variété d'algorithmes de cas similaires, si ... autre a maintenir complexe et difficile.
Quand utiliser: un système a beaucoup, beaucoup de classes, et les distinguer que leur comportement immédiat.
Comment résoudre: ces algorithmes dans un ensemble d'une classe, remplacé arbitrairement.
Le code clé: mettre en œuvre la même interface.
Exemples d'application: 1, Zhuge Liang de bonnes idées, chaque kit est une stratégie. 2, chemin de Voyage à Voyage, le vélo, en voiture, chaque moyen de Voyage est une stratégie. 3, JAVA AWT dans LayoutManager.
Avantages: 1, l'algorithme peut changer librement. 2, afin d' éviter l'utilisation de plusieurs conditions. 3, une bonne évolutivité.
Inconvénients: 1, la stratégie augmentera. 2, toutes les classes politiques ont besoin d' une exposition externe.
Les scénarios d'utilisation: 1, s'il y a un système dans lequel de nombreuses classes, la différence entre eux que dans leur comportement, puis utiliser le modèle de stratégie permet à un objet peut être sélectionner dynamiquement une action dans un certain nombre de comportements. 2, un besoin de système pour choisir l' un de plusieurs algorithmes dynamiquement. 3. Si un objet a beaucoup de comportement, si ce n'est pas le mode approprié, ces actes devaient utiliser la déclaration de sélection multiple conditionnelle à atteindre.
Remarque: Si la politique est un système de plus de quatre ans, nous avons besoin d'envisager l'utilisation du mode mixte, des stratégies de résolution de problèmes d' expansion de la classe.
réalisation
Nous allons créer une activité personnalisée de stratégie interface et la mise en œuvre de la stratégie de l' interface de la classe politique de l' entité. Contexte utilise une stratégie quelconque.
StrategyPatternDemo , nos cours de démonstration utiliser Contexte des objets et des politiques pour démontrer les changements dans un contexte de comportement lorsqu'il configuration ou à l' aide d' un changement de politique.
1, pour créer une interface
publique Interface stratégie { publique int doOperation ( int num1, int num2); }
2. Créez une classe qui implémente l'entité d'interface
publique classe OperationAdd met en œuvre la stratégie { @Override publique int doOperation ( int num1, int num2) { retour num1 + num2; } }
publique classe OperationSubtract met en œuvre la stratégie { @Override publique int doOperation ( int num1, int num2) { retour num1 - NUM2; } }
publique classe OperationMultiply met en œuvre la stratégie { @Override publique int doOperation ( int num1, int num2) { retour num1 * num2; } }
3. Créer une classe de contexte
publique classe Contexte { privée de stratégie Stratégie; publique Contexte (stratégie stratégie) { ce .strategy = stratégie; } Publique int executeStrategy ( int num1, int num2) { retour strategy.doOperation (num1, num2); } }
4, vue du contexte quand il modifie les stratégies de changement de comportement Stratégie
publique classe StrategyPatternDemo { publics statiques vides principaux (String [] args) { Contexte contexte = nouveau contexte ( nouveau OperationAdd ()); System.out.println ( "10 + 5 =" + context.executeStrategy (10,5 )); contexte = nouveau contexte ( nouveau OperationSubtract ()); System.out.println ( "10 - 5 =" + context.executeStrategy (10,5 )); contexte = nouveau contexte ( nouveau OperationMultiply ()); System.out.println ("10 * 5 =" + context.executeStrategy (10,5 )); } }
exportation
Référence: https://www.runoob.com/design-pattern/strategy-pattern.html