Patrón State

¿Qué es el Patrón State?

El State es un patrón de diseño de comportamiento que permite que un objeto cambie su comportamiento cuando su estado interno cambia. Es útil para implementar máquinas de estados y para gestionar comportamientos basados en condiciones específicas.

Código de Ejemplo en JavaScript

            
class State {
  handle(context) {}
}

class StateA extends State {
  handle(context) {
    console.log("Estado A: Cambiando al Estado B");
    context.setState(new StateB());
  }
}

class StateB extends State {
  handle(context) {
    console.log("Estado B: Cambiando al Estado A");
    context.setState(new StateA());
  }
}

class Context {
  constructor() {
    this.state = new StateA(); // Estado inicial
  }

  setState(state) {
    this.state = state;
  }

  request() {
    this.state.handle(this);
  }
}

// Uso del Patrón State
const context = new Context();

context.request(); // Estado A: Cambiando al Estado B
context.request(); // Estado B: Cambiando al Estado A
context.request(); // Estado A: Cambiando al Estado B

        

Casos de Uso

  • Implementar máquinas de estados finitos.
  • Modelar comportamientos de objetos que dependen de su estado interno.
  • Gestión de flujos de trabajo donde el estado dicta las acciones permitidas.

Patrones Relacionados

  • Strategy: Define comportamientos intercambiables, pero no depende del estado interno.
  • Memento: Guarda y restaura estados, pero no define comportamientos basados en estados.
  • Observer: Notifica cambios en el estado, pero no altera comportamientos directamente.
Whatsapp Mentores Tech