Latest web development tutorials

Modo de estratégia

No Modo Estratégia (padrão Strategy), um ato da classe, ou algoritmo pode ser alterado em tempo de execução. Este tipo de padrões de projeto pertencem padrões comportamentais.

No modo de estratégia, criamos objetos e uma variedade de estratégias de mudança de comportamento como objeto de política para mudar a representação contexto de objeto. objeto de política para mudar o objeto de contexto de execução do algoritmo.

introdução

Intenção: A definição de uma família de algoritmos, encapsular cada um deles, e torná-los intercambiáveis.

Principalmente para resolver: No caso do algoritmo semelhante múltipla usando if ... else trouxe complexo e difícil de manter.

Quando usar: um sistema tem muitas, muitas categorias, e distingui-los apenas o seu comportamento imediato.

Como corrigir: será que estes algoritmos em um pacote de uma classe arbitrariamente substituídos.

O código de chave: implementar a mesma interface.

Exemplos de aplicação: 1, boas ideias Zhuge Liang, cada kit é uma estratégia.2, viagens maneira de viajar, escolha a andar de bicicleta, de carro, cada maneira de viajar é uma estratégia. 3, JAVA AWT o LayoutManager.

Vantagens: 1, o algoritmo pode mudar livremente.2, para evitar o uso de múltiplos condicional. 3, boa escalabilidade.

Desvantagens: 1, a estratégia irá aumentar.2, todas as classes precisam de exposição política externa.

cenários de uso: 1, se não houver um sistema em que muitas categorias, a diferença entre eles apenas em seu comportamento, em seguida, usar o padrão de estratégia dinamicamente pode optar por deixar um ato em muitos comportamentos de um objeto.2, um sistema necessita de escolher dinamicamente um de vários algoritmos. 3. Se um objeto tem um monte de comportamento, se isso não é o modo adequado, estes actos tiveram que usar várias condições são selecionadas declaração de alcançar.

Nota: Se a política de um sistema de mais de quatro, você precisa considerar o uso de modo misto, para resolver o problema da classe política de expansão.

realização

Vamos criar uma actividade de interface e implementação bem definidas da entidade interface deEstratégiaEstratégia Estratégia.Contextoé o uso de uma certa classe de política.

StrategyPatternDemo,nossas aulas de demonstração utilizando ContextoContextoe políticas objetos para demonstrar comportamento quando ele é usado para configurar ou alterar a mudança de política.

padrão de estratégia UML diagrama

passo 1

Criar uma interface.

Strategy.java

Estratégia interface pública {
   public int doOperation (int num1, int num2);
}

passo 2

Criar classe de entidade que implementa a interface.

OperationAdd.java

classe pública OperationAdd implementa Estratégia {
   @Override
   int pública doOperation (int num1, int num2) {
      voltar num1 + num2;
   }
}

OperationSubstract.java

classe pública OperationSubstract implementa Estratégia {
   @Override
   int pública doOperation (int num1, int num2) {
      voltar num1 - num2;
   }
}

OperationMultiply.java

classe pública OperationMultiply implementa Estratégia {
   @Override
   int pública doOperation (int num1, int num2) {
      voltar num1 * num2;
   }
}

passo 3

Criar classeContext.

Context.java

Contexto classe pública {
   Estratégia Estratégia privado;

   Contexto público (estratégia Estratégia) {
      this.strategy = estratégia;
   }

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

passo 4

UseContextode ver quando ele muda oEstratégia deestratégia de mudançade comportamento.

StrategyPatternDemo.java

StrategyPatternDemo classe pública {
   main (String [] args) public static void {
      contexto contexto = new contexto (nova OperationAdd ());		
      System.out.println ( "+ 5 10 =" + context.executeStrategy (10, 5));

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

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

passo 5

Verifique saída.

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