Alternativen für Callbacks/Listener



  • Zum updaten von GUIs oder anderem werden ja oft Callbacks verwendet, die ausgelöst werden, wenn sich ein Wert ändert. Das führt aber auch dazu, dass bei einigen Operationen, z.B. Laden, viel zu viele Callbacks aufgerufen werden und alles unnötig langsam wird. Gibts da was besseres als Callbacks?



  • erfghnmghfc schrieb:

    Das führt aber auch dazu, dass bei einigen Operationen, z.B. Laden, viel zu viele Callbacks aufgerufen werden und alles unnötig langsam wird.

    Callbacks sind hier nicht das Problem, du machst einfach was falsch. So pauschal kann man das aber nicht beantworten.



  • Was machst du denn, wenn sich mehrere Werte von einem Objekt ändern und jede Änderung einen Callback auslöst bei dem ein anderes Objekt updates macht, aber es eigentlich reichen würde, wenn am Ende der Änderungen nur ein update stattfinden würde?



  • Am Ende der langen Aktion erst ein Event auslösen lassen? 🙄



  • Dann muss man für jede Aktion die ein oder mehrere Attribute ändert ein Event machen, statt einfach nur ein event im Setter auszulösen. Dann muss aber auch wieder jeder wissen, welche Events das Attribut ändern, für das er sich interessiert. Auch nicht so toll.



  • Warum muss jede Änderung einen Callback auslösen? Wie gesagt, dein Design ist einfach falsch. So pauschal kann man da aber nichts dazu sagen. Solche Probleme haben alle anderen ja auch irgendwie gelöst. Es ist keine Frage der Technologie, sondern der Architektur.



  • Mechanics schrieb:

    Warum muss jede Änderung einen Callback auslösen?

    Was gibts für Alternativen? Was machst du, wenn z.B. an 3 Stellen in Fenstern ein Name von einem Objekt steht und editiert werden kann und natürlich überall der aktuelle angezeit werden soll?



  • erfghnmghfc schrieb:

    Mechanics schrieb:

    Warum muss jede Änderung einen Callback auslösen?

    Was gibts für Alternativen? Was machst du, wenn z.B. an 3 Stellen in Fenstern ein Name von einem Objekt steht und editiert werden kann und natürlich überall der aktuelle angezeit werden soll?

    Die 3 teilen sich einfach 1 Callback?



  • Zum dritten mal, das kann man pauschal nicht sagen ^^

    Wenn du viele Daten laden musst, dann registrierst du deine Callbacks eben nachdem du die Daten geladen hast. Oder du deaktivierst das Feuern der Events. Ich weiß nicht, was für ein GUI Framework du verwendest, aber die meisten erlauben das. Oder zu schaltest einen Proxy dazwischen, der die Events entsprechend weiterleitet oder nicht. Es gibt viele Möglichkeiten so eine Anwendung zu strukturieren, und es gibt viele Möglichkeiten, die meisten dieser Architekturen für konkrete Anwendungsfälle zu optimieren. Du stellst viel zu allgemeine Fragen, daraus wird dein eigentliches Problem nicht klar.



  • Ja, irgendwelche updates deaktivieren wird auch gemacht, aber ich empfinde sowas eigentlich nur als Workaround. Callbacks sind ja eine ganz allgemeine Sache und ich hätte halt gehoft, dass sich jemand schon eine allgemeine Antwort auf meine Frage ausgedacht hat.



  • Eine Alternative zu Callbacks ist Polling - wohl deutlich schlimmer.


Log in to reply