Modèles de comportement - modèle Stratégie

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

Je suppose que tu aimes

Origine www.cnblogs.com/hoo334/p/12529490.html
conseillé
Classement