quinta-feira, 1 de março de 2012

Pattern: State

Padrão de comportamento que auxilia alterar o comportamento de determinado objeto.

wikipedia
 A classe Context agrega um estado, no qual podem existir vários estados do objeto, e a interface State define um padrão comum para os vários estados. E o estado do objeto Context pode mudar em tempo de execução.



Exemplo: Uma classe carro possui dois estados, estado andando e parado, quando o carro executa o método handle() , ele alterna entre Andando e Parado.

public class Carro {

 private Estado estado;

 public Carro(Estado estado) {
  this.estado = estado;
 }

 public void handle() {
  estado.handle(this);
 }

 public Estado getEstado() {
  return estado;
 }

 public void setEstado(Estado estado) {
  this.estado = estado;
 }

}
 
public interface Estado {
 
 void handle(Carro carro);

}


public class Andando implements Estado {

 @Override
 public void handle(Carro carro) {
  carro.setEstado(new Parado());
 }

}


public class Parado implements Estado{

 @Override
 public void handle(Carro carro) {
  carro.setEstado(new Andando());
 }

}


Utilizando o código criado, iniciamos o carro com um estado e cada vez que chamamos o método handle desse carro, o seu estado é alterado.
 
public static void main(String[] args) {
  
  Carro carro = new Carro(new Parado());
  carro.handle();
  
}

Obrigado

Nenhum comentário:

Postar um comentário