Categorías
Design Patterns Stories

Patrón de diseño de Java: Estado

El patrón de diseño de estado es principalmente para cambiar el estado en tiempo de ejecución.

Historia de patrón de estado

Las personas pueden vivir con diferentes estados financieros. Pueden ser ricos o pueden ser pobres. Los dos estados, ricos y pobres, pueden convertirse el uno al otro de vez en cuando. La idea detrás del ejemplo: la gente normalmente trabaja más duro cuando es pobre y juega más cuando es rica. Lo que hacen depende del estado en el que viven. El estado se puede cambiar en función de sus acciones, de lo contrario, la sociedad no es justa.

Diagrama de clases de patrón de estado

Aquí está el diagrama de clases. Puede comparar esto con el patrón de estrategia para comprender mejor la diferencia.

Patrón de estado código Java

El siguiente ejemplo de Java muestra cómo funciona el patrón de estado.

Clases estatales.

package com.programcreek.designpatterns.state;
 
interface State {
	public void saySomething(StateContext sc);
}
 
class Rich implements State{
	@Override
	public void saySomething(StateContext sc) {
		System.out.println("I'm rick currently, and play a lot.");
		sc.changeState(new Poor());
	}
}
 
class Poor implements State{
	@Override
	public void saySomething(StateContext sc) {
		System.out.println("I'm poor currently, and spend much time working.");
		sc.changeState(new Rich());
	}
}
  Patrón de diseño de Java: iterador

Clase StateContext

package com.programcreek.designpatterns.state;
 
public class StateContext {
	private State currentState;
 
	public StateContext(){
		currentState = new Poor();
	}
 
	public void changeState(State newState){
		this.currentState = newState;
	}
 
	public void saySomething(){
		this.currentState.saySomething(this);
	}
}

Clase principal para pruebas

import com.programcreek.designpatterns.*;
 
public class Main {
	public static void main(String args[]){
		StateContext sc = new StateContext();
		sc.saySomething();
		sc.saySomething();
		sc.saySomething();
		sc.saySomething();
	}
}

Resultado:

I'm poor currently, and spend much time working. 
I'm rick currently, and play a lot.
I'm poor currently, and spend much time working. 
I'm rick currently, and play a lot.

Por Programación.Click

Más de 20 años programando en diferentes lenguajes de programación. Apasionado del code clean y el terminar lo que se empieza. ¿Programamos de verdad?

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *