Encapsula los estados de un objeto como objetos discretos, cada uno perteneciendo a una subclase separada de una clase abstracta de estado
Multiples objetos deben cambiar dinamicamente sus atributos, o su estado. Cuando un objeto es notificado de un evento, debe cambiar de estado
El diagrama UML es el siguiente:
El estado abstracto o base es el siguiente
public interface EstadoBase { .... }See the complete code for EstadoBase here.
public void op1(); public void op2(); public void op3();
El estado que recibe eventos del contexto y responsable de cambiar los estados
public class EstadoContexto implements EstadoBase { .... }See the complete code for EstadoContexto here.
public void op1(){ _impl.op1();} public void op2(){ _impl.op2();} public void op3(){ _impl.op3();} private EstadoBase _impl=null; public void cambiarEstado(EstadoBase nuevoEstado) { _impl=nuevoEstado; }
Y los estados son
public class Estado1 implements EstadoBase { .... }See the complete code for Estado1 here.
public void op1(){ System.out.println("Estado 1:op1");} public void op2(){ System.out.println("Estado 1:op2");} public void op3(){ System.out.println("Estado 1:op3");}
public class Estado2 implements EstadoBase { .... }See the complete code for Estado2 here.
public void op1(){ System.out.println("Estado 2:op1");} public void op2(){ System.out.println("Estado 2:op2");} public void op3(){ System.out.println("Estado 2:op3");}
El cliente puede ser una interfaz grafica que actue en base a un estado seleccionado EstadoGUI