State

Solo disponible en BuenasTareas
  • Páginas : 7 (1553 palabras )
  • Descarga(s) : 0
  • Publicado : 16 de mayo de 2011
Leer documento completo
Vista previa del texto
-------------------------------------------------
State (patrón de diseño)
El patrón de diseño State se utiliza cuando el comportamiento de un objeto cambia dependiendo del estado del mismo. Por ejemplo: una alarma puede tener diferentes estados, como desactivada, activada, en configuración. Definimos una interfaz Estado_Alarma, y luego definimos los diferentes estados.
Contenido [ocultar]* 1 Introducción * 2 Propósito * 3 Motivación * 4 Problema * 5 Consideraciones * 6 Solución * 7 Estructura UML * 8 Participantes * 9 Colaboraciones * 10 ¿Cómo funciona? * 11 ¿Cuándo emplearlo? * 12 Ventajas y desventajas * 13 Implementación (Java) * 13.1 Conclusiones |
-------------------------------------------------
[editar]Introducción
En determinadas ocasiones,cuando el contexto en el que se está desarrollando requiere que un objeto tenga diferentes comportamientos según el estado en que se encuentra, resulta complicado poder manejar el cambio de comportamientos y los estados de dicho objeto, todos dentro del mismo bloque de código. El patrón State propone una solución a esta complicación, creando básicamente, un objeto por cada estado posible delobjeto que lo llama.
-------------------------------------------------
[editar]Propósito
Permite a un objeto alterar su comportamiento según el estado interno en que se encuentre.
-------------------------------------------------
[editar]Motivación
El patrón State está motivado por aquellas clases en que, según su estado actual, varía su comportamiento ante los diferentes mensajes. Como ejemplose toma una clase TCPConection que representa una conexión de red, un objeto de esta clase tendrá diferentes respuestas según su estado (Listening, Close o Established). Por ejemplo una llamada al método Open de un objeto de la clase TCPConection diferirá su comportamiento si la conexión se encuentra en Close o en Established.
-------------------------------------------------
[editar]ProblemaExiste una extrema complejidad en el código cuando se intenta administrar comportamientos diferentes según una cantidad de estados diferentes. Asimismo el mantenimiento de este código se torna dificultoso, e incluso se puede llegar en algunos casos puntuales a la incongruencia de estados actuales por la forma de implementación de los diferentes estados en el código (por ejemplo con variables paracada estado).
-------------------------------------------------
[editar]Consideraciones
Se debe contemplar la complejidad comparada con otras soluciones.
-------------------------------------------------
[editar]Solución
Se implementa una clase para cada estado diferente del objeto y el desarrollo de cada método según un estado determinado. El objeto de la clase a la que le pertenecen dichosestados resuelve los distintos comportamientos según su estado, con instancias de dichas clases de estado. Así, siempre tiene presente en un objeto el estado actual y se comunica con este para resolver sus responsabilidades.
La idea principal en el patrón State es introducir una clase abstracta TCPState que representa los estados de la conexión de red y una interfaz para todas las clases querepresentan los estados propiamente dichos. Por ejemplo la clase TCPEstablished y la TCPClose implementan responsabilidades particulares para los estados establecido y cerrado respectivamente del objeto TCPConnection. La clase TCPConnection mantiene una instancia de alguna subclase de TCPState con el atributo state representando el estado actual de la conexión. En la implementación de los métodos deTCPConnection habrá llamadas a estos objetos representados por el atributo state para la ejecución de las responsabilidades, así según el estado en que se encuentre, enviará estas llamadas a un objeto u otro de las subclases de TCPState.
-------------------------------------------------
[editar]Estructura UML
-------------------------------------------------
[editar]Participantes
1....
tracking img