Monitorowanie właściwości

Monitorowanie zostało oparte na wzorcu projektowym Observer, i rolę obserwatora pełni klasa PropertyMonitor. Za każdym razem, kiedy monitorowana właściwość zmienia swoją wartość, wywoływana jest metoda isActive reguły sprawdzającej, czy należy powiadamiać monitor, a następnie wywoływana jest metoda propertyChanged(Property, Object) monitora. Metoda ta odczytuje zapamiętaną starą wartość właściwości, konstruuje obiekt zdarzenia (klasy PropertyEvent), i wywołuje abstrakcyjną metodę propertyChanged(PropertyEvent), która musi zostad zdefiniowana przez konkretny monitor.

Cały ciąg akcji związanych ze zmianą wartości właściwości jest przedstawiony na poniższym diagramie:

Strategie monitorowania wartości pojedynczej właściwości

Monitory są powiadamiane zawsze, kiedy właściwości zostanie przypisana nowa wartość, jednak możliwe jest także
poinformowanie monitorów o zmianach wewnątrz obiektu będącego wartością właściwości. Decyzja o tym, kiedy należy
powiadomić monitory, zależy powiązanej z właściwością strategii monitorowania. W platformie jAgE dostępne są trzy
wbudowane strategie, przedstawione na poniższym diagramie:

Pierwsza ze strategii, NoMonitoringStrategy, nie uwzględnia żadnych zmian wewnątrz wartości, co powoduje, że
monitory są powiadamiane tylko w przypadku przypisania właściwości nowej wartości.
Druga strategia, ChangesNotifierMonitoringStrategy, jest przeznaczona dla właściwości, których typ implementuje
interfejs IChangesNotifier. Strategia ta podpina do wartości właściwości swój monitor (implementujący interfejs
IChangesNotifierMonitor), i za każdym razem, kiedy ten monitor jest powiadamiany o zmianie wewnątrz wartości,
powiadamiane są także monitory podłączone do całej właściwości.