push u. pull Prinzip



  • kann jd mir erklären, welchen Unterschied gibt es ?
    man sagt, push ist effizienter, aber 2 Objects sind damit enggekoppelt, wieso?
    besser mit einem Beispiel



  • netrobot schrieb:

    besser mit einem Beispiel

    Genau. Mach mal mit einem Beispiel klar, worum es überhaupt geht.



  • es gibt 2 classen, 1. heisst Subject, 2. heisst Observer
    zuerst muss Oberser bei Subject registeriert werden, d.h. Subject sieht Observer.
    jetzt sind die Daten in subject geändert, was dem Observer informiert werden müssen.
    Es geht drum, wie bekommt der Observer die Daten



  • Der Observer hat eine Methode mit Parametern, die alle nötigen Änderungsinformationen enthalten. Das beobachtete Objekte ruft bei einer Änderung an sich selbst dann bei allen angemeldeten Observern diese Methode auf.
    Die Signatur dieser Methode lässt sich zum Beispiel über ein Interface (abstrakte Klasse) vertraglich vereinbaren.



  • es ist dann ein push methode



  • auch Bring-Prinzip genannt, was ist mit Hol-Prinzip?



  • push:
    Das Subjekt teilt allen Observern mit, wenn sich etwas ändert.
    Der Vorteil ist, daß hier nur bei tatsächlichen Änderungen etwas gemacht werden muß. Aber dafür muß das Subjekt auch eine Liste mitschleppen, wer etwas von ihm wissen will.

    pull:
    Der Observer fragt in regelmäßigen das Subjekt, ob sich sein Status geändert hat.
    Hier ist es den Subjekten egal, wer an ihrem Status interessiert ist - wer kommt und nachfragt, wird bedient. Allerdings müssen die Obeserver ständig aktiv nachfragen, ob etwas passiert ist - und das kostet Rechenzeit.



  • Das kenne ich auch noch in einer anderen Variante:

    Beim Push-Prinzip wird möglichst jede Information über das eingetretene Ereignisse mitgegeben. Das führt dazu, dass die Beobachter viel zu viel Zeug mitgeteilt bekommen, das sie garnicht interessiert.

    Beim Pull-Prinzip wird garkeine Information mitgegeben und die Beobachter müssen sich selbst darum kümmern, sich die Informationen über das Ereignis zu beschaffen.

    Weder das Erste noch das Zweite ist optimal. Meist benutzt man ein Mittelding zwischen beiden.



  • push:
    Das Subjekt teilt allen Observern mit, wenn sich etwas ändert.
    Der Vorteil ist, daß hier nur bei tatsächlichen Änderungen etwas gemacht werden muß. Aber dafür muß das Subjekt auch eine Liste mitschleppen, wer etwas von ihm wissen will.
    

    d.h. Subjekt kennt Observer(Liste von Observern), und um Observer aktualisieren zu können, muss Observer Subjekt auch kennen. (Beide Seiten sind angekoppelt)

    pull:
    Der Observer fragt in regelmäßigen das Subjekt, ob sich sein Status geändert hat.
    Hier ist es den Subjekten egal, wer an ihrem Status interessiert ist - wer kommt und nachfragt, wird bedient. Allerdings müssen die Obeserver ständig aktiv nachfragen, ob etwas passiert ist - und das kostet Rechenzeit.
    

    entweder Observer kennt Subject od umgekehrt, einseitige Ankopplung,
    rightig?



  • Wenn der Observer das Objekt immer pollen muss, ist das IMHO nicht mehr das Observer-Pattern. Ich würde da eher 7H3 N4C3R zustimmen, was push und pull angeht.


Anmelden zum Antworten