Latest web development tutorials

mode Stratégie

En mode Stratégie (Motif Stratégie), un acte de classe, ou un algorithme peut être modifié lors de l'exécution. Ce type de modèles de conception appartiennent schémas comportementaux.

En mode stratégie, nous créons des objets et une variété de stratégies de changement de comportement que l'objet de la politique pour changer la représentation de l'objet de contexte. Objet de stratégie pour changer l'objet de contexte d'exécution de l'algorithme.

introduction

Intention: La définition d'une famille d'algorithmes, encapsuler chacun, et les rendre interchangeables.

Principalement pour résoudre: Dans le cas de multiples algorithme similaire en utilisant if ... else a complexes et difficiles à maintenir.

Quand utiliser: un système a beaucoup, beaucoup de catégories, et de les distinguer seulement leur comportement immédiat.

Comment corriger: ces algorithmes dans un ensemble d' une classe sera arbitrairement remplacé.

Le code clé: mettre en œuvre la même interface.

Exemples d'application: 1, de bonnes idées Zhuge Liang, chaque kit est une stratégie.2, chemin de Voyage à voyager, choisir de faire du vélo, en voiture, chaque moyen de voyager est une stratégie. 3, JAVA AWT l'LayoutManager.

Avantages: 1, l'algorithme peut passer librement.2, pour éviter l'utilisation de plusieurs conditions. 3, une bonne évolutivité.

Inconvénients: 1, la stratégie va augmenter.2, toutes les classes ont besoin d'une exposition de politique étrangère.

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 peut dynamiquement choisir de laisser un acte dans de nombreux comportements d'un objet. 2, un système doit choisir dynamiquement l'un de plusieurs algorithmes. 3. Si un objet a beaucoup de comportements, si ce n'est pas le mode approprié, ces actes ont dû utiliser plusieurs conditions sont déclaration pour atteindre sélectionnés.

Remarque: Si la politique d'un système de plus de quatre, vous avez besoin d'envisager l'utilisation du mode mixte, pour résoudre le problème de la classe politique d'expansion.

réalisation

Nous allons créer une interface et la mise en œuvre des activités bien définies de l'entité d' interfaceStratégieStratégieStratégie.Lecontexteest l'utilisation d'une politique de classe certaine.

StrategyPatternDemo,nos classes de démonstration à l' aideContexteContexte et politique des objets pour démontrer le comportement quand il est utilisé pour configurer ou modifier le changement de politique.

modèle de stratégie diagramme UML

Etape 1

Créer une interface.

Strategy.java

Stratégie d'interface publique {
   public int doOperation (int num1, int num2);
}

Etape 2

Créer classe d'entité qui implémente l'interface.

OperationAdd.java

public class OperationAdd implémente Stratégie {
   @Override
   public int doOperation (int num1, int num2) {
      retour num1 + num2;
   }
}

OperationSubstract.java

OperationSubstract public class implémente Stratégie {
   @Override
   public int doOperation (int num1, int num2) {
      retour num1 - num2;
   }
}

OperationMultiply.java

public class OperationMultiply implémente Stratégie {
   @Override
   public int doOperation (int num1, int num2) {
      retour num1 * num2;
   }
}

Etape 3

Créer classeContext.

Context.java

public class Contexte {
   stratégie de stratégie privée;

   Contexte du public (stratégie Stratégie) {
      this.strategy = stratégie;
   }

   public int executeStrategy (int num1, int num2) {
      retour strategy.doOperation (num1, num2);
   }
}

Etape 4

Utilisezcontextepour voir quand il change lastratégiede stratégie de changement decomportement.

StrategyPatternDemo.java

public class StrategyPatternDemo {
   main (String [] args) {public static void
      contexte Contexte = new Context (nouveau OperationAdd ());		
      System.out.println ( "10 + 5 =" + context.executeStrategy (10, 5));

      context = nouveau contexte (nouveau OperationSubstract ());		
      System.out.println ( "10 - 5 =" + context.executeStrategy (10, 5));

      context = nouveau contexte (nouveau OperationMultiply ());		
      System.out.println ( "10 * 5 =" + context.executeStrategy (10, 5));
   }
}

Etape 5

Vérifiez la sortie.

10 + 5 = 15
10 à -5 = 5
10 * 5 = 50