Junior — Middle
Pode explicar o conceito do padrão State e como ele é usado na programação orientada a objetos?
sobes.tech IA
Resposta da IA
O padrão State permite que um objeto altere o seu comportamento dependendo do seu estado interno, mudando a classe de estado durante a execução. Isso ajuda a evitar grandes operadores condicionais e torna o código mais flexível e extensível.
Na programação orientada a objetos, para implementar o padrão State, cria-se uma interface base de estado e várias classes concretas de estado. O contexto (o objeto principal) mantém uma referência ao estado atual e delega chamadas a ele.
Exemplo em Java:
interface State {
void handle(Context context);
}
class ConcreteStateA implements State {
public void handle(Context context) {
System.out.println("Estado A lidando com a solicitação.");
context.setState(new ConcreteStateB());
}
}
class ConcreteStateB implements State {
public void handle(Context context) {
System.out.println("Estado B lidando com a solicitação.");
context.setState(new ConcreteStateA());
}
}
class Context {
private State state;
public Context(State state) {
this.state = state;
}
public void setState(State state) {
this.state = state;
}
public void request() {
state.handle(this);
}
}
// Uso:
Context context = new Context(new ConcreteStateA());
context.request(); // Estado A lidando com a solicitação.
context.request(); // Estado B lidando com a solicitação.
Dessa forma, o comportamento do objeto muda dinamicamente ao alterar o estado.