Mehrfachvererbung in dem Fall angemessen?



  • esel schrieb:

    es geht darum dass man gui code nicht mit controller code zumüllt, sondern die teile trennt, dann findet man sie auch einfacher wieder. gilt jetzt auch nicht nur für benutzer actions...

    Richtig. Trotzdem muss man dafür nicht auf anonyme Listener / Actions verzichten. Ich kann mir problemlos eine View Klasse schreiben, die ausschließlich den GUI Code kapselt und dazu eine Controller Klasse, die bzgl. dieser View alle Listener / Actions setzt und verwaltet.



  • esel schrieb:

    es geht darum dass man gui code nicht mit controller code zumüllt, sondern die teile trennt, dann findet man sie auch einfacher wieder. gilt jetzt auch nicht nur für benutzer actions...

    Schade, du hast das listener Konzept nicht verstanden.

    Das Problem ist nämlich "buttonClickFired" ist ziemlich kacke. Welcher Button denn? Niemand weiss es. Deshalb dispatcht du "buttonClickFired" auf "userHasClickedWorldDominationButton" und schon ists klar was da passiert.

    Weil stell dir mal vor du hast 2 buttons O_o
    Machst du dann ein lustiges if im handler? ne ne ne



  • Shade Of Mine schrieb:

    esel schrieb:

    es geht darum dass man gui code nicht mit controller code zumüllt, sondern die teile trennt, dann findet man sie auch einfacher wieder. gilt jetzt auch nicht nur für benutzer actions...

    Schade, du hast das listener Konzept nicht verstanden.

    Das Problem ist nämlich "buttonClickFired" ist ziemlich kacke. Welcher Button denn? Niemand weiss es. Deshalb dispatcht du "buttonClickFired" auf "userHasClickedWorldDominationButton" und schon ists klar was da passiert.

    Weil stell dir mal vor du hast 2 buttons O_o
    Machst du dann ein lustiges if im handler? ne ne ne

    kannst du bitte erläutern, was das mit meinem post zu tun hat und meiner aussage dass man keine anonymen klassen für listener verwenden sollte? in dem text den du zitiert hast war nichtmal die rede vom "listener konzept" - zusammenhang!?
    und wie gesagt benutzt man bei buttons in der regel eh actions - siehe tfas code - somit ist dein "problem" total irrelevant und hat mit anonymen klassen auch nichts zu tun (auch einen anonymen listener kann ich an 2 buttons hängen).

    tfa schrieb:

    esel schrieb:

    soll auch projekte geben an denen mehr als eine person arbeitet.
    davon abgesehen hab ich auch nicht ständig überblick wo jede einzelne funktion in meinem code versteckt ist, tolle tools wie call graph generation gibt es ja nicht umsonst.
    es geht darum dass man gui code nicht mit controller code zumüllt, sondern die teile trennt, dann findet man sie auch einfacher wieder. gilt jetzt auch nicht nur für benutzer actions...

    "Call Graph"? GUI-Code? Controller Code? Zumüllen? Wie kommst du jetzt schon wieder da rauf?
    Du hast gesagt, dass anonyme Klassen schlecht sind. Warum? Bleib bei der Sache!

    ich hab ein beispiel gebracht, dass der code an übersichtlichkeit und flexibilität verliert - kannst du dem beispiel nicht folgen?

    Ich glaube, du weißt nicht so recht, worüber du redest....

    nö ich hab in der tat noch nie an einem deiner "mehrere hunderte zeilen"-projekte mitgearbeitet 🤡 😃 du provi 👍 😃
    überall wo mehr als ein knopf vorhanden ist, definier ich actions entweder über einzelne klassen, annotations oder xml, da gibt es genug andere wege und alle sind besser als anonyme klassen.



  • Ein Button ist ein einfaches Beispiel.

    Es geht darum dass eben ein Event in einem anderen Kontext gefangen wird als es abgefeuert wird. dh die Namensbezeichnungen passen nicht.

    Eine Animation könnte zB ein Tick Event feuern. Nun nehmen wir mal an dass es einen Controller gibt der mehrere Animationen verwaltet. Das Problem nun ist, dass für das Model keine Tick Events sinn machen, du willst ein "FooAnimationTicked" Event haben. Und dafür hast du die anonymen Klassen.

    Oder würdest du hier das Model die Listener implementieren lassen und dann per if entscheiden welches animationsobjekt getickt ist?

    Natürlich kannst du dich jetzt rausreden und andere Konzepte statt Listener verwenden - aber damit gibst du ja nur indirekt zu dass das erben von (mehreren) listener schlecht ist.



  • esel schrieb:

    ich hab ein beispiel gebracht, dass der code an übersichtlichkeit und flexibilität verliert - kannst du dem beispiel nicht folgen?

    Ich habe kein Beispiel von dir gelesen. Nur wirres, unzusammenhänges Zeug.
    Ich warte immer noch auf ein Code-Beispiel von dir.

    nö ich hab in der tat noch nie an einem deiner "mehrere hunderte zeilen"-projekte mitgearbeitet 🤡 😃 du provi 👍 😃

    "provi"! Toll! Wenn du zum Profi geworden bist, lässt man dich vielleicht auch mal an größere Projekte.

    überall wo mehr als ein knopf vorhanden ist, definier ich actions entweder über einzelne klassen, annotations oder xml, da gibt es genug andere wege und alle sind besser als anonyme klassen.

    Kleiner Tipp: Mein Beispiel verwendet eine Action, die als ("einzelne") anonyme Klasse implementiert ist.



  • Irgendwie ist die Diskussion etwas lächerlich geworden. Selbstverständlich benutzt man in professionellem Java-Code anonyme Objekte. Anders könnte man z.B. nie die GUI aus anderen Threads als dem EDT aktualisieren:

    SwingUtilities.invokeLater(new Runnable() {
      public void run() {
        // GUI aktualisieren
      }
    });
    

    Weitere Beispiele, wo man wohl fast immer anonyme Objekte benutzt: Callbacks oder in vielen Fällen eben Listener. Klar benutzt man für Buttons lieber Actions, die man in der gesamten GUI wiederverwenden kann (z.B. für Menüs oder Toolbars). Aber es gibt glaube ich noch 1-2 andere Listener als den ActionListener. 🤡

    Ich benutze im übrigen auch beim Umgang mit global definierten Actions häufig anonyme Objekte. Beispielsweise möchte ich ein Kontextmenü auf einem Table realisieren, wobei das jeweils selektierte Objekt in der Tabelle an die Action im Menü übergeben werden soll. Das schreit förmlich nach einer anonymen Action, die die eigentliche Action mit der Selektion aufruft.

    @esel - Wie löst Du sowas ohne anonyme Objekte? 🤡



  • dass der ganze thread überhaupt nichts mit anonymen oder nicht-anonymen klassen zu tun hat, wurde auch eigentlich schon vor ein paar seiten geklärt 😉



  • DrGreenthumb schrieb:

    dass der ganze thread überhaupt nichts mit anonymen oder nicht-anonymen klassen zu tun hat, wurde auch eigentlich schon vor ein paar seiten geklärt 😉

    dann lies ihn mal. anonyme klassen sind hier ein ziemlich zentrales thema...

    thema des threads muss nichts mit dem topic oder der frage des op zu tun haben 🙄


Anmelden zum Antworten