Latest web development tutorials

Modalità strategia

Nella modalità Strategia (Strategy Pattern), un atto di classe, o algoritmo può essere modificato in fase di esecuzione. Questo tipo di modelli di progettazione appartengono modelli comportamentali.

In modalità di strategia, creiamo oggetti e una varietà di strategie di cambiamento del comportamento, come l'oggetto della politica di cambiare la rappresentazione dell'oggetto contesto. oggetto Criteri per cambiare l'oggetto contesto di esecuzione dell'algoritmo.

introduzione

Intent: la definizione di una famiglia di algoritmi, incapsulare ognuno di loro, e renderli intercambiabili.

Soprattutto per risolvere: Nel caso di multipli algoritmo simile usando se ... else portato complesso e difficile da mantenere.

Quando utilizzare: un sistema ha molti, molte categorie, e per distinguerli solo il loro comportamento immediato.

Come risolvere: saranno questi algoritmi in un pacchetto di una classe arbitrariamente sostituito.

Il codice chiave: implementare la stessa interfaccia.

Esempi di applicazione: 1, le buone idee Zhuge Liang, ogni kit è una strategia.2, modo di viaggio di viaggiare, scegliere di andare in bicicletta, in auto, ogni modo di viaggiare è una strategia. 3, JAVA AWT la LayoutManager.

Vantaggi: 1, l'algoritmo può liberamente passare.2, per evitare l'uso di più condizionale. 3, buona scalabilità.

Svantaggi: 1, la strategia aumenterà.2, tutte le classi hanno bisogno di esposizione politica estera.

Scenari di utilizzo: 1, se vi è un sistema in cui molte classi, la differenza tra loro solo nella loro comportamento, quindi utilizzare il modello di strategia può dinamicamente scegliere di lasciare un atto in molti comportamenti di un oggetto.2, un sistema deve scegliere dinamicamente tra diversi algoritmi. 3. Se un oggetto ha un sacco di comportamento, se non il modo giusto, questi atti dovuto usare condizioni multiple sono selezionati economico da realizzare.

Nota: Se la politica di un sistema di più di quattro, è necessario prendere in considerazione l'uso di modalità mista, per risolvere il problema della classe politica di espansione.

realizzazione

Creeremo un ben definite attività di interfaccia e implementazione dell'interfacciaStrategiaStrategia Strategia entità.Il contestoè l'uso di una certa classe politica.

StrategyPatternDemo,i nostri corsi dimostrativi utilizzandoContestoContesto e politici oggetti per dimostrare il comportamento quando viene utilizzato per configurare o modificare il cambiamento di politica.

modello di strategia diagramma UML

fase 1

Creare un'interfaccia.

Strategy.java

Strategia interfaccia pubblica {
   public int doOperation (int num1, num2 int);
}

fase 2

Creare classe di entità che implementa l'interfaccia.

OperationAdd.java

public class OperationAdd implementa strategia {
   @Override
   public int doOperation (int num1, num2 int) {
      tornare num1 + num2;
   }
}

OperationSubstract.java

public class OperationSubstract implementa strategia {
   @Override
   public int doOperation (int num1, num2 int) {
      tornare num1 - num2;
   }
}

OperationMultiply.java

public class OperationMultiply implementa strategia {
   @Override
   public int doOperation (int num1, num2 int) {
      tornare num1 * num2;
   }
}

fase 3

Crea classeContext.

Context.java

public class Contesto {
   strategia Strategia privato;

   Contesto pubblico (strategia Strategy) {
      this.strategy = strategia;
   }

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

fase 4

UtilizzareContestoper vedere quando cambia lastrategiastrategia di cambiamento delcomportamento.

StrategyPatternDemo.java

public class StrategyPatternDemo {
   Main (string [] args) {public static void
      contesto Context = nuovo contesto (nuova OperationAdd ());		
      System.out.println ( "10 + 5 =" + context.executeStrategy (10, 5));

      context = new Context (nuova OperationSubstract ());		
      System.out.println ( "10 - 5 =" + context.executeStrategy (10, 5));

      context = new Context (nuova OperationMultiply ());		
      System.out.println ( "10 * 5 =" + context.executeStrategy (10, 5));
   }
}

fase 5

Verifica uscita.

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