Article image
Weslley Prado
Weslley Prado14/04/2023 17:12
Compartilhe

O Padrão de Design Strategy: Uma Técnica para a Modularização de Algoritmos

  • #Java

O padrão de design Strategy é uma técnica de programação utilizada para definir diferentes estratégias para executar uma mesma tarefa em sistemas complexos. Esse padrão é particularmente útil quando diferentes abordagens são necessárias para uma mesma tarefa, como é o caso de um robô que precisa executar diferentes tipos de movimentos. Neste artigo, vamos explorar como utilizar o padrão de design Strategy para modularizar algoritmos e tornar o código mais flexível e fácil de manter.

Exemplo de Uso do Padrão de Design Strategy

Para exemplificar o uso do padrão de design Strategy, vamos criar um robô que possa executar diferentes tipos de movimentos. Para isso, precisamos criar uma interface Behavior que defina os métodos necessários para cada tipo de movimento:

public interface Behavior {
  public void move();
}

Em seguida, criamos três classes que implementam essa interface: NormalBehavior, FightBehavior e DefenseBehavior. Cada classe implementa o método move de forma diferente, representando um tipo de movimento que o robô pode executar.

public class NormalBehavior implements Behavior {
  public void move() {
      System.out.println("Movimento normal");
  }
}


public class FightBehavior implements Behavior {
  public void move() {
      System.out.println("Movimento de luta");
  }
}


public class DefenseBehavior implements Behavior {
  public void move() {
      System.out.println("Movimento de defesa");
  }
}

Agora podemos criar a classe Robot, que receberá um objeto do tipo Behavior no construtor. O método move do robô simplesmente chama o método move do objeto Behavior passado.

public class Robot {
  private Behavior behavior;


  public Robot(Behavior behavior) {
      this.behavior = behavior;
  }


  public void move() {
      behavior.move();
  }
}

Dessa forma, podemos criar um robô que executa diferentes tipos de movimentos simplesmente passando um objeto Behavior diferente no construtor. Veja o exemplo:

Behavior normalBehavior = new NormalBehavior();
Robot robot1 = new Robot(normalBehavior);
robot1.move();  // imprime "Movimento normal"


Behavior fightBehavior = new FightBehavior();
Robot robot2 = new Robot(fightBehavior);
robot2.move();  // imprime "Movimento de luta"


Behavior defenseBehavior = new DefenseBehavior();
Robot robot3 = new Robot(defenseBehavior);
robot3.move();  // imprime "Movimento de defesa"

Vantagens do Padrão de Design Strategy

O padrão de design Strategy traz várias vantagens para o desenvolvimento de software:

  • Modularidade: O código é dividido em classes estratégia, cada uma responsável por uma única tarefa. Isso torna o código mais modular e fácil de manter.
  • Flexibilidade: Com o padrão de design Strategy, é possível definir diferentes estratégias para executar uma mesma tarefa. Isso torna o código mais flexível e adaptável a mudanças nos requisitos.
  • Legibilidade: Cada classe estratégia é nomeada de acordo com sua função específica, tornando o código mais legível e fácil de entender.
  • Reutilização: As classes estratégia podem ser reutilizadas em diferentes contextos, o que reduz a quantidade de código a ser escrita.

Conclusão

O padrão de design Strategy é uma técnica de programação muito útil que pode simplificar a utilização de algoritmos em um sistema, tornando o código mais modular, flexível e fácil de manter. No exemplo acima, utilizamos esse padrão para criar um robô que pode executar diferentes tipos de movimentos, mas ele pode ser aplicado em diversas outras situações em que diferentes abordagens para uma mesma tarefa são necessárias.

Compartilhe
Comentários (1)
Carlo Caetano
Carlo Caetano - 14/04/2023 17:22

Ajuda muito também na retirada de fluxos condicionais como o IF.