La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Patron ESTADO Por : Luis Alberto Silva. Descripción General Permite que un objeto modifique su comportamiento cada vez que cambia su estado interno. Parecera.

Presentaciones similares


Presentación del tema: "Patron ESTADO Por : Luis Alberto Silva. Descripción General Permite que un objeto modifique su comportamiento cada vez que cambia su estado interno. Parecera."— Transcripción de la presentación:

1 Patron ESTADO Por : Luis Alberto Silva

2 Descripción General Permite que un objeto modifique su comportamiento cada vez que cambia su estado interno. Parecera que cambia la clase del objeto. Nombre del Patron: State (Estado, Objects for States). Usa Polymorfismo para cambiar fácilmente el comportamiento de un objeto en tiempo de ejecucion.

3 Cuando se usa el pátron? Cuando queremos cambiar el comportamiento dependiendo del estado. Cuando queremos que un objeto cambie su comportamiento, según cambia su estado, se presenta el problema de la complejidad de código. Cuando queremos disminuir la complejidad algoritmica disminuyendo condicionales. if (myself = happy) then { eatIceCream(); …. } else if (myself = sad) then { goToPub(); …. } else if (myself = ecstatic) then { ….

4 Estructura General

5 Ejemplo I water StateOfWater WaterVapor LiquidWaterIce increaseTemp() decreaseTemp() state variable Client increaseTemp() decreaseTemp() increaseTemp() decreaseTemp() increaseTemp() decreaseTemp() increaseTemp() decreaseTemp()

6 Participantes de la implementación? Context: Define la Interfaz y mantiene una instancia con el estado actual. State: Define una interfaz para el comportamiento asociado a un determinado estado del Contexto. ConcreteState: Cada subclase implementa el comportamiento asociado con un estado del contexto. La clase “Context” mantiene una referencia a la clase concreta a fin de poderlas manipular.

7 Ejemplo II MyMoodMoodState doSomething() madangryhappy doSomething() state variable Client doSomething()

8 Consecuencias y beneficios del Patron Estado Localiza el comportamiento dependiente del estado y divide dicho comportamiento en diferentes estados.  Nuevos estados y transiciones se pueden agregar fácilmente mediante la definición de nuevas subclases.  Simplifica el mantenimiento. Hace explícitas las transiciones entre estados.  Objetos separados para estados separados hace explícita la transición en lugar de utilizar los valores de datos internos para definir las transiciones en un objeto combinado. Los objetos Estado pueden compartirse.  Contexto pueden compartir objetos Estado si no hay variables de instancia.

9 Ejemplo automata Finito class Automaton { State currentState = State.initial; State state = State.A; public void op_a(final Automaton context) { state.op_a(context); } public void op_b(final Automaton context) { state.op_b(context); } … } A B C a a a b b b

10 Estado Como un Enumeration Class Automaton { … enum State { A { @Override public void op_a(final Automaton context) { context.state = B; } @Override public void op_b(final Automaton context) { context.state = C; } }, B {…} C {…}; public abstract void op_a(final Automaton context); public abstract void op_b(final Automaton context); }

11


Descargar ppt "Patron ESTADO Por : Luis Alberto Silva. Descripción General Permite que un objeto modifique su comportamiento cada vez que cambia su estado interno. Parecera."

Presentaciones similares


Anuncios Google