Die meisten Einsteiger haetten mit deiner Erklaehrung z.B. einige Probleme:
- Was ist eine Callback-Funktion?
Ich hatte nicht den Eindruck, daß es ab dem Punkt, an dem mir unterstellt wurde, Swing auf die schwierige Tour gelernt zu haben, noch um Einsteiger gegangen ist. Außerdem hatte ich nicht den Eindruck, daß du wirklich keine Abstraktion verstehst und glaubst, ich würde Einsteiger diesbezüglich mit einem saloppen Halbsatz abkanzeln. (Ja, ich bin arrogant. Aber auf andere Weise.)
Zitat
Dann gibt es Punkte die Du ueberhauopt nicht erklaehrt hast:
- Warum macht man das denn ueberhaupt so?
In Bezug auf Swing? Weil es anders nicht geht. Allgemein? Das ist nicht das Thema von Swing.
Zitat
- Wann koennte ich das auch so machen wollen?
- Wann sollte ich es besser bleiben lassen?
Sinnvolle Fragen, wenn es um Software Engineering geht. Keine sinnvollen Fragen, wenn es darum geht, wie man in Swing auf einen Click reagiert.
Zitat
Das GOF Buch habe ich nicht empfohlen.
Ich weiß. Ich hab mir die Freiheit genommen, das Book-Containing-A-Description-Of-The-Observer-Pattern-Pattern zu erkennen.
Zitat
Das man es lesen sollte bevor man sich mit Java GUIs auseinandersetzt hab ich schon gar nicht gesagt.
Du hast aber gesagt, man sollte über Observer lesen, bevor man mit Java GUIs programmiert, no? Ist die Beschreibung des Observer im GOF-Buch so mies?
Zitat
Du beschreibst hier zwei Implementierungen eines Patterns und bemerkst (voellig korrekt), das eine der beiden Varianten einfacher ist als die zweite. Was hat das damit zu tun ob man etwas ueber das Pattern
selber wissen sollte?
Nichts. Da ich generell nicht der Meinung bin, daß man groß versuchen sollte, Patterns zu formalisieren, bin ich auch nicht der Meinung, daß man irgendwas über ein konkretes Pattern wissen sollte.
Zitat
Alles Namen von konkreten Implementierungen
Und obwohl ich nicht klug bin, sondern mich nur so gebe, habe ich erkannt, daß sie auf einer abstrakten Ebene alle was gemeinsam haben. Genau wie ein neuer Swing-User das Callback-Prinzip auch erkennen und verstehen wird, auch ohne vorher ein Patterns-Buch gelesen zu haben. Klar kann man danach ein Patterns-Buch lesen und sehen aha, das ist eine Instanz von Observer; man kann sogar vorher ein Patterns-Buch lesen und dann erkennen, daß es eine Instanz von Observer ist; aber wenn du behauptest, es wäre viel schwieriger, Swing ohne Patterns-Buch zu lernen, dann hältst du Java-Programmierer pauschal für inkompetente Idioten. (Ich auch, aber ich tue es aus Arroganz, siehe oben; deine Motivation scheint eine andere zu sein.)
Zitat
Wenn ich Kollegen vorschlage irgendwo in einem Design einen Iterator zu verwenden, dann haben die ein genaues Bild davon wie die Schnittstellen aussehen.
Für sehr abstrakte Werte von "genau", ja.
Zitat
Abstraktion ist ein Werkzeug. Abstraktion kann zu high-level sein, wenn sie einem ohne Anwendungsbezug top-down eingetrichtert wird. (Hallo Mathe-LVAs.) Insbesondere wenn man etwas neues (wie Swing) lernt, ist es oft sinnvoller, mal was konkreteres zu lernen und das später zu verallgemeinern. (Nicht nur zu verallgemeinern, auch zu vervollständigen; solang ich keine removeListener-Methode brauche, suche ich sie nicht in der API und hab nur ein partielles Modell von Swing im Kopf. Wenn ich mal allgemeiner über das "Pattern" nachdenke oder nachlese, könnte mir einfallen rauszufinden, wie detach in Swing heißt. An dem Punkt ist das gut, aber muß ich das als Newbie gleich wissen? Das lenkt mich doch nur von meinem konkreten Problem ab, mal irgendeine Reaktion auf irgendeine Aktion zu kriegen.)
Zitat
Wenn ich ein Problem allgemein Beschreiben kann, dann kann ich es besser erkennen wenn ich es antreffe.
Habe ich ein brauchbares Modell für sowas im Kopf, wenn ich nur eine abstrakte Beschreibung des Patterns gelesen habe? Vielleicht. Kann ich ein sinnvolles Modell für etwas mir völlig unbekanntes aufbauen, indem ich das konkrete Problem studiere? Vielleicht. Deine Antworten (mein mentales Modell deiner Antworten!) auf diese Fragen scheinen mir zu allgemein und zu falsch zu sein.
Zitat
Abstraktion macht es moeglich das ich mir morgens
Kafee machen kann, ohne jedes mal die einzelnen Schritte durchzugehen,
die dafuer notwendig sind.
(Hast du jeden Morgen eine andere Kaffeemaschine?) Ich hab nix gegen Abstraktion per se, wenn sie richtig angewendet wird. Ich hab was gegen Leute, die meinen ich würde die Bedienungsanleitung meiner Kaffeemaschine nie verstehen, ohne vorher ein allgemeines Buch über Kaffeemaschinenbedienungsmuster gelesen zu haben.
Edit: Wobei "Kaffeemaschine" da noch viel zu konkret ist. Auf die Beziehung von Observer zu Swing umgemünzt ginge es im Buch vielleicht eher allgemeines Gebrabbel über Maschinen mit n verschiedenen Eingabesubstanzen, die daraus m verschiedene Ausgabesubstanzen produzieren.
Zitat
Was kuemmert es mich wer als erster da war?
Gar nicht. Du blendest aus, daß die Leute auch ohne Patterns-Bücher irgendwie über die Runden gekommen sind. Und du scheinst deswegen leider zu folgern, daß es ohne Patterns-Bücher gar nicht oder nur sehr schwer geht. Ich habe darauf hingewiesen, daß ich diese Ansicht mit Hinblick auf die Geschichte nicht teile.
Zitat
Im uebrigen behauptet die GOF nicht, die Patterns in ihrem Buch erfunden zu haben.
(Phew, da bin ich aber erleichtert, daß ich das auch nie behauptet habe.)
Zitat
Du brauchst also gar keine Buecher zum lernen?
Ich habe gesagt, ich brauche kein Buch, das mir die Lösung meiner derzeitigen konkreten Aufgaben vorkaut, weil ich diese Lösungen aus meinem bisher angesammelten Wissen und meiner Erfahrung (ein verschleiertes Wort für "Patterns") und meiner Kenntnis der Problemdomäne synthetisiere.
Zitat
Woher weisst du das du etwas wirklich verstanden hast?
Was heißt "wirklich verstehen"? Wenn ich ein Muster erkenne, das jemand in einem Buch beschrieben hat, was hat das mit meinem Verständnis zu tun? Sind solche philosophischen Fragen relevant, wenn es darum geht, meinen Job zu machen? (Nein.)