![]() |
Patrón observador, attach, notify,update ...
Hola:
Estoy realizando un programa y me han dado el Diagrama de Colaboraciones del patrón observador. Me he encontrado con una serie de llamadas attach,dettach,notify y update que no se como implementar ni se lo que deben hacer exactamente. Alguien me lo puede explicar Gracias |
El patrón del observador consiste de un sujeto a observar (subject) y varios objetos que lo observan (observers). La idea es que cada cambio en el sujeto se notifica a los observadores que tenga conectados. Un ejemplo lo da un DataSet. Cada cambio en algún registro, se notifica a todos los controles dbaware conectados a él através de un DataSource
Como en todo patrón de diseño, puede haber muchas formas de implementarlo, pero la idea básica sería así:
La idea es que ante algún cambio en SUBJECT que haya que informar, el método Notify recorre todos los OBSERVER conectados llamando a su método Update. Los métodos Attach y Detach están pensados para conecar un observador o desconectarlo. En la implementación específica que hagas, TSubject debe mantener una lista interna de sus observadores, por ejemplo con un TObjectList, de manera que el método Notify se vería así:
Puede haber muchos tipos de observadores, el único requisito sería que desciendan de TObserver e implementen el método Update. En este método, cada descendiente específico de TObsrver, hará lo que deba hacer usando la información proveniente del parámetro SUBJECT que se le pasa. Todo esto es muy parecido a la forma en que Delphi maneja los eventos. Un Form, por ejemplo, es un observador de un TEdit que tenga dentro mediante el evento OnChange del TEdit. Cuando hay un cambio en el TEdit, se llama al evento OnChange, en caso de haber uno asignado. La diferencia es que en el caso de eventos sólo puede haber un observador mientras que en el patrón general puede haber varios observadores, cada uno reaccionando de distinta manera. // Saludos |
Por cierto, si buscas en Google por "observer pattern" encontrarás no pocas referencias que explican el objetivo y delinean la implementación. Y si buscas "delphi observer pattern" encontrarás referencias del patrón específicas para Delphi.
// Saludos |
Hola,
Cita:
|
Hola,
Gracias por vuestras respuestas, la verdad es que tengo algún problemilla para entender en inglés asi que os agradeceria que me pusierais un ejemplo de como declarar e impletar 3 clases con este patrón. Yo lo tengo que realizar con la clase supermercado, tienda y consumidor. Muchas Gracias |
1 Archivos Adjunto(s)
Hola:
Adjunto el diagrama de colaboraciones para que me digais como tengo que enfocar esto. Os agradecia si me dijerais las cabeceras de las funciones. Un Saludo, y muchas Gracias |
La franja horaria es GMT +2. Ahora son las 21:26:53. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi