Hallo,
bevor ein notifyObservers Aufruf erfolgreich ist, muss ja mittels setChanged das flag auf true gesetzt werden. Im Buch "Designpatterns von Kopf bis Fuß" wurde dies damit erklärt, dass man dadurch eine höhere Flexibilität gewinnt. Am Beispiel einer Wetterstation, welche Observer informiert, wurde erklärt, dass man, wenn sich die Temperatur nur geringfügig ändert so ja permanent die Observer informieren würde. Das Flag gibt jedoch die Möglichkeit, dass informieren etwas feiner zu steuern, z.B. informiere nur, wenn sich ein Temperaturwert um 1 Grad geändert hat. Kennt jemand das Beispiel?
Beim Lesen habe ich mich gefragt, wo da die höhere Flexibilität sein soll. Wenn notifyObservers immer die Observer informieren würde, d.h. kein flag vorher geprüft wird, wäre ich doch trotzdem noch flexibel.
Für das o.g. Szenario würde ich ja folgendes schreiben (Pseudocode):
if(temperatureNew-temperatureOld>= 2)
{
setChanged();
notifyObservers();
}
So müsste ich ja, wenn das Flag nicht da wäre ja nur schreiben:
if(temperatureNew-temperatureOld>= 2)
{
notifyObservers();
}
Wo also bringt mir das setChanged Flag eine höhere Flexibilität? Das habe ich noch nicht ganz verstanden.
Schönes WE
bevor ein notifyObservers Aufruf erfolgreich ist, muss ja mittels setChanged das flag auf true gesetzt werden. Im Buch "Designpatterns von Kopf bis Fuß" wurde dies damit erklärt, dass man dadurch eine höhere Flexibilität gewinnt. Am Beispiel einer Wetterstation, welche Observer informiert, wurde erklärt, dass man, wenn sich die Temperatur nur geringfügig ändert so ja permanent die Observer informieren würde. Das Flag gibt jedoch die Möglichkeit, dass informieren etwas feiner zu steuern, z.B. informiere nur, wenn sich ein Temperaturwert um 1 Grad geändert hat. Kennt jemand das Beispiel?
Beim Lesen habe ich mich gefragt, wo da die höhere Flexibilität sein soll. Wenn notifyObservers immer die Observer informieren würde, d.h. kein flag vorher geprüft wird, wäre ich doch trotzdem noch flexibel.
Für das o.g. Szenario würde ich ja folgendes schreiben (Pseudocode):
if(temperatureNew-temperatureOld>= 2)
{
setChanged();
notifyObservers();
}
So müsste ich ja, wenn das Flag nicht da wäre ja nur schreiben:
if(temperatureNew-temperatureOld>= 2)
{
notifyObservers();
}
Wo also bringt mir das setChanged Flag eine höhere Flexibilität? Das habe ich noch nicht ganz verstanden.
Schönes WE