Al González
20-11-2014, 01:29:03
Hola amigos.
Hace un par de días, trabajando con Delphi XE5, encontré la interfaz IObserver en System.Classes. Su declaración es la siguiente:
IObserver = interface
['{B03253D8-7720-4B68-B10A-E3E79B91ECD3}']
procedure Removed;
function GetActive: Boolean;
procedure SetActive(Value: Boolean);
function GetOnObserverToggle: TObserverToggleEvent;
procedure SetOnObserverToggle(AEvent: TObserverToggleEvent);
property OnObserverToggle: TObserverToggleEvent read GetOnObserverToggle write SetOnObserverToggle;
property Active: Boolean read GetActive write SetActive;
end;
He podido averiguar un poco sobre ella y veo que está relacionada con LiveBindings y con una relativamente nueva propiedad de TComponent llamada Observers (objeto lista de clase TObservers). Todo esto tiene que ver con el patrón observador (http://es.wikipedia.org/wiki/Observer_%28patr%C3%B3n_de_dise%C3%B1o%29) que es más o menos conocido.
Se incluyó esa propiedad en TComponent para ayudar a los programadores de clases a implementar de forma más holgada el patrón mencionado. La documentación oficial de la interfaz IObserver es prácticamente nula (como desafortunadamente suele pasar con las características novedosas y poco populares de RAD Studio) y, como de todas maneras suelo cerciorarme de las cosas revisando cómo funcionan por dentro, pude deducir a través del código fuente de varias clases nativas cuál es significado y uso que la VCL (y FMX) hace de las diferentes propiedades y métodos de la interfaz IObserver. Con excepción del método Removed, del cual no hay una sola línea de código fuente que lo llame, como para yo darme una idea de lo que debo tomar en cuenta cuando implemente la interfaz.
Así que aquí estoy, después de intentar con Google y Yandex, preguntando si casualmente alguno de ustedes tiene más información al respecto. Me serviría cualquier dato o pista de valor sobre la interfaz IObserver de Delphi y en especial su método Removed, así como cualquier "tuit" que quieran hacer de esta solicitud (con algo de suerte puede que el mensaje llegue hasta alguien de los que estuvo presente cuando se diseñó esta característica).
Lo sé, lo sé, es probable que haya que abrir un hilo similar en los foros de Embarcadero, pero aquí es más cómodo preguntar primero. ;)
Muchas gracias.
Al González.
Hace un par de días, trabajando con Delphi XE5, encontré la interfaz IObserver en System.Classes. Su declaración es la siguiente:
IObserver = interface
['{B03253D8-7720-4B68-B10A-E3E79B91ECD3}']
procedure Removed;
function GetActive: Boolean;
procedure SetActive(Value: Boolean);
function GetOnObserverToggle: TObserverToggleEvent;
procedure SetOnObserverToggle(AEvent: TObserverToggleEvent);
property OnObserverToggle: TObserverToggleEvent read GetOnObserverToggle write SetOnObserverToggle;
property Active: Boolean read GetActive write SetActive;
end;
He podido averiguar un poco sobre ella y veo que está relacionada con LiveBindings y con una relativamente nueva propiedad de TComponent llamada Observers (objeto lista de clase TObservers). Todo esto tiene que ver con el patrón observador (http://es.wikipedia.org/wiki/Observer_%28patr%C3%B3n_de_dise%C3%B1o%29) que es más o menos conocido.
Se incluyó esa propiedad en TComponent para ayudar a los programadores de clases a implementar de forma más holgada el patrón mencionado. La documentación oficial de la interfaz IObserver es prácticamente nula (como desafortunadamente suele pasar con las características novedosas y poco populares de RAD Studio) y, como de todas maneras suelo cerciorarme de las cosas revisando cómo funcionan por dentro, pude deducir a través del código fuente de varias clases nativas cuál es significado y uso que la VCL (y FMX) hace de las diferentes propiedades y métodos de la interfaz IObserver. Con excepción del método Removed, del cual no hay una sola línea de código fuente que lo llame, como para yo darme una idea de lo que debo tomar en cuenta cuando implemente la interfaz.
Así que aquí estoy, después de intentar con Google y Yandex, preguntando si casualmente alguno de ustedes tiene más información al respecto. Me serviría cualquier dato o pista de valor sobre la interfaz IObserver de Delphi y en especial su método Removed, así como cualquier "tuit" que quieran hacer de esta solicitud (con algo de suerte puede que el mensaje llegue hasta alguien de los que estuvo presente cuando se diseñó esta característica).
Lo sé, lo sé, es probable que haya que abrir un hilo similar en los foros de Embarcadero, pero aquí es más cómodo preguntar primero. ;)
Muchas gracias.
Al González.