Junior — Middle
Como implementar a execução de diferentes funções de métodos dentro de uma classe, dependendo do estado atual ou modo de operação da classe?
sobes.tech IA
Resposta da IA
Para implementar diferentes variantes de comportamento dos métodos de uma classe dependendo do estado ou modo de operação atual, muitas vezes usa-se o padrão de projeto "Estado" (State).
A ideia é que a classe tenha um estado interno, representado por objetos separados que implementam uma interface comum. A chamada de método é delegada ao estado atual, que determina o comportamento específico.
Exemplo em Java:
interface State {
void handle();
}
class StateA implements State {
public void handle() {
System.out.println("Comportamento para o estado A");
}
}
class StateB implements State {
public void handle() {
System.out.println("Comportamento para o estado B");
}
}
class Context {
private State state;
public void setState(State state) {
this.state = state;
}
public void request() {
state.handle();
}
}
// Uso
Context context = new Context();
context.setState(new StateA());
context.request(); // Comportamento para o estado A
context.setState(new StateB());
context.request(); // Comportamento para o estado B
Dessa forma, é possível alterar o comportamento dos métodos sem múltiplos operadores condicionais dentro da classe.