Chain of Responsibility

Anuncio
Ampliación de Programación Orientada a Objetos
Patrón de Comportamiento
Chain of Responsibility
Autor
Alejandro Villén Hernández
Chain of Responsibility
●
Idea básica
●
Propósito
●
Motivación, Aplicabilidad
●
Estructura, Participantes
●
Colaboraciones, Consecuencias
●
Implementación, Usos conocidos
●
Presentación y descripción del proyecto
Chain of Responsibility
●
Propósito
Evitar que el receptor se apodere por completo de la petición, y dar oportunidades a otros receptores a contestar a la petición
Petición
?
Petición
R1
R1
R2
R2
R3
Chain of Responsibility
●
Motivación
La petición debe ser procesada por los receptores, lo cual quiere decir que, ésta petición queda al margen del uso exclusivo.
Pretendemos dar una mayor detalle y especificación a las peticiones generadas. Las peticiones serán filtradas por todos los receptores a medida que se van generando los resultados esperados.
Chain of Responsibility
●
Aplicabilidad
Se usa dicho patrón cuando:
∙ Hay más de un objeto que pueden manejar una petición, y el manejador no se conoce a priori, sino que debería determinarse automáticamente.
∙Se quiere enviar una petición a un objeto entre varios sin especificar explícitamente el receptor.
∙El conjunto de objetos que pueden tratar una petición debería ser especificado dinámicamente.
Resultados
?
Sin especificar el receptor
Resultados
Resultados
Chain of Responsibility
●
Estructura
La estructura del patrón se describe como:
Cliente
Manejador
Manejador específico 1
Manejador específico 2
...
Chain of Responsibility
●
Participantes
Cliente: será el encargado de generar las peticiones que hayan de pasar por el manejador genérico.
Manejador: deberá estar compuesto por un interfaz donde se vayan a desarrollar las peticiones que genera el cliente.
Manejador específico: tratará la petición que le corresponda del cliente.
Chain of Responsibility
●
Colaboraciones
Cuando un cliente envía una petición, ésta se propaga a través de la cadena hasta que un objeto manejador específico se hace responsible de procesarla.
Chain of Responsibility
●
Consecuencias
Reducción del acoplamiento
Ni el receptor ni el emisor se conocen explícitamente. Un objeto sólo tiene que saber que una petición será manejada.
Añade flexibilidad para asignar responsabilidades a objetos.
Las responsabilidades de los mensajes pueden cambiar mediante la organización del proceso de ejecución. No se garantiza la recepción
Puesto que no existe un receptor específico para los mensajes, éstos pueden quedarse sin procesar.
Chain of Responsibility
●
Implementación
∙Implementación de la cadena sucesoria. Forma de hacerlo:
∙Usando nuevos enlaces, con el patrón Composite.
∙Usando los enlaces existentes.
∙Conexión de los sucesores
Los própios ManejadoresEspecíficos serán los que se encargarán de reenviar la petición de forma incondicional. Las referencias deberán estar definidas.
∙Representación de las peticiones
Uso de paso de parámetros o variables medieante una función manejadora, o hacer uso de clases.
Chain of Responsibility
●
Usos conocidos
Podemos encontrar implementaciones del patrón hechas sobre:
∙Manejadores de eventos sobre usuarios en bibliotecas.
∙Editores gráficos.
∙Protocolos industriales a niveles bajos. Ej. Bus Can.
Proyecto
Emulación del Centro de Control de un Vehículo implementado sobre el
Patrón Chain of Responsibility
Proyecto
●
Estructura del proyecto
La estructura del patrón se describe como:
Palanca intermitente
...
Control
Panel
Sensor de presión Airbag
Airbags
LED Airbag
Intermitentes
Seguridad
...
Conducción
Proyecto
●
Estructura del proyecto
La estructura del patrón se define como:
Control Panel
Componentes del vehículo
LedOn()
LedOff()
EnabeGatget()
DisableGatget()
Log()
Airbags
LedOn()
LedOff()
EnabeGatget()
DisableGatget()
Log()
...
Intermitentes
LedOn()
LedOff()
EnabeGatget()
DisableGatget()
Log()
Proyecto
●
Estructura del proyecto
La comunicación entre el manejador y los manejadores específicos:
­Codificar cada uno de los comportamientos de los componentes.
­Dar una prioridad de tratamiento y reacción sobre los componentes.
Proyecto
In fo r m a ció n q u e r ep o r ta ca d a u n o d e lo s b its
●
Estructura del proyecto
Definición de la trama
1
18 bits
8 bits
2 bits
El bit 0, información del estado del sistema de encendido
Del bit 1 al 18, infomación de testigos de alerta
Del bit 19 al bit 26, información de testigos de marcha
Del bit 27 al bit 28, información de testigos de neutralización
0
Sis tem a d e
in for m ació n
Co n t acto activa d o
On / Off
1
Tes tigo d e aler ta
ABS
On / Off
2
Tes tigo d e aler ta
Air b ag
On / Off
3
Tes tigo d e aler ta
Aler t a cen tr aliz ad a
On / Off
4
Tes tigo d e aler ta
Au to d ia gn os is m o t or
On / Off
5
Tes tigo d e aler ta
Car ga b at er ia
On / Off
6
Tes tigo d e aler ta
Cin t ur o nes
On / Off
7
Tes tigo d e aler ta
Co n tr o l ESP
On / Off
8
Tes tigo d e aler ta
Dir ecció n as is tid a
On / Off
9
Tes tigo d e aler ta
Far os d ir eccio n ales
On / Off
10
Tes tigo d e aler ta
Fr en a d a
On / Off
11
Tes tigo d e aler ta
Lo g incid en t es
On / Off
12
Tes tigo d e aler ta
Pr es encia a gu a
On / Off
13
Tes tigo d e aler ta
Pr es ió n aceite m o t or
On / Off
14
Tes tigo d e aler ta
Pu er ta ab ier t a
On / Off
15
Tes tigo d e aler ta
Res er va car b ur an t e
On / Off
16
Tes tigo d e aler ta
Rue d a p inch ad a
On / Off
17
Tes tigo d e aler ta
Ser vicios
On / Off
18
Tes tigo d e aler ta
Tem p er at ur a líq u id o
r efr iger ació n
On / Off
19
Tes tigo d e m ar ch a
An tin ieb las tr as er os
On / Off
20
Tes tigo d e m ar ch a
An tin ieb las d elan t er os
On / Off
Proyecto
●
Conclusiones del proyecto
Usando el patrón de comportamiento obtenemos:
Puesto que la seguridad en un vehículo es importante, el uso del patrón sobre este modelo es aconsejable, puesto que se asemeja al Protocolo de Comunicaciones Bus CAN.
Descargar