State Pattern

Padrão de Projeto Comportamental

O que é?

Permite que um objeto altere seu comportamento quando seu estado muda.

Problema

Muitos if/else ou switch baseados em estado


if (estado == "A") { ... }
else if (estado == "B") { ... }
        

Solução

Criar uma classe para cada estado

Usar polimorfismo ao invés de condicionais

Estrutura

  • State (interface)
  • Concrete States
  • Context

Exemplo: Semáforo

Estados: Verde, Amarelo, Vermelho

Interface State


interface State {
    void handle();
}
          

Estado Verde


class GreenState implements State {
    public void handle() {
        System.out.println("Pode passar!");
    }
}
          

Contexto


class TrafficLight {
    private State state;

    public void setState(State state) {
        this.state = state;
    }

    public void action() {
        state.handle();
    }
}
          

Vantagens

  • Remove if/else complexos
  • Código mais organizado
  • Facilita manutenção

Resumo

Estado muda → comportamento muda

Use classes ao invés de condicionais