Listener ohne Objekt

Garm

Mitglied
Ahoi.

Ich kriege seit zwei Tagen keine praktikable Lösung für mein Problem, deswegen frage ich jetzt hier ;)

Ich habe mein Prog weitgehend(!) nach dem MVC-Pattern aufgebaut.
Da ich permanent ein Verzeichnis überwachen will, habe ich dem neuen WatchService von Java 7 bedient.
Das klappt gut, nur habe ich (da neuer Thread nötig) den Watcher in eine neue Klasse gepackt, aus der die Logik über das Ereignis informiert wird ( deswegen das (!) ) und das Ereignis verwertet.

Ich möchte nun, dass auch der Controller von dem Watcher informiert wird, dass ein Ereignis ausgelöst wurde.

Ich bin Noob, deswegen verzeigt mir meine Unstrukturiertheit, aber das Programm funktioniert so wie es soll, nur dass eben ein im Controller definiertes Ereignis auf die Watchermeldung folgen soll und der Controller bisher nicht informiert wird.

Meine Idee war logischerweise ein Listener, aber ich habe nix woran ich den binden kann.
Ich kenne mich nicht gut genug aus, so dass mir kein dafür passender Listener einfällt bzw ich "mal schnell" einen zusammen baue, der das tut was ich will.


Ansätze, Vorschläge, Ideen, Lösungen?

cya
Garm
 

rme

Top Contributor
Hallo,

dein Watcher ist im MVC-Pattern ja ein Model. Du könntest ihn zum Beispiel im Controller beim Starten der Anwendung initialisieren. Eigentlich ist es nicht schlimm, einen eigenen Listener dafür zu basteln: Du erstellst ein Interface mit den Methoden, die der Controller zum Empfang von Ereignissen haben sollte. Der Watcher hat dann eine Menge von Objekten, die dieses Interface implementieren (wobei die Menge hier wohl die Größe 1 hätte, nämlich nur der Controller) und informiert diese in einer Schleife über Ereignisse.

Es gibt allerdings auch eine fertige Möglichkeit: Du könntest deinen Watcher von der Klasse Observable ableiten, da ist alles schon fertig. Der Controller implementiert dann das Observer-Interface.

Übrigens wäre das dann kein MVC, sondern das MVP-Pattern - die Kommunikation zwischen Model und Views geht nämlich eigentlich nicht über den Controller, sondern die Views melden sich als Observer / Listener beim Model an, sodass der Controller nichts von Änderungen im Model erfährt. Bei dir verkommt der Controller dann zu einem Presenter - er steuert beide Richtungen und gibt die Änderungen des Models an die Views weiter.
 

Garm

Mitglied
Ahoi.

Hmm Observable....den hatte ich schonmal, aber ich konnte mich da irgendwie zwecks Gedankenverknotung nicht reindenken.
Ich werd mir das jetzt genauer angucken, danke dir ;)

Und danke für die Info, dass meine "fast MVC"-Struktur sogar einen Namen hat *g*
 

nvidia

Bekanntes Mitglied
[...]

Übrigens wäre das dann kein MVC, sondern das MVP-Pattern - die Kommunikation zwischen Model und Views geht nämlich eigentlich nicht über den Controller, sondern die Views melden sich als Observer / Listener beim Model an, sodass der Controller nichts von Änderungen im Model erfährt. Bei dir verkommt der Controller dann zu einem Presenter - er steuert beide Richtungen und gibt die Änderungen des Models an die Views weiter.

Natürlich geht die Kommunikation zwischen Model/View über den Controller dafür ist er da, der verarbeitet nämlich den Input der Views und reicht ihn an das Model weiter und die View holt sich die aktualisierten Daten. Und es sind über die Zeit einige Interpretationen des MVC aufgetaucht, unter anderem auch die Kommunkation View <-> Controller <-> Model oder erweitert um ein Application Model etc. Deshalb ist es auch mittlerweile auch mehr eine Familie. Hier finden sich aber reichlich Beiträge zum Thema MVC wenn man die Forensuche betätigt.

Deine Aussage das der Controller zum Presenter verkommt ist falsch. Auch im MVP unterhalten sich das Model und die View direkt. Wie das MVP mal erläutert und definiert wurde ist hier nachzulesen http://www.wildcrest.com/Potel/Portfolio/mvp.pdf. Ist man fertig wird man feststellen das man das so eigentlich noch nie wirklich gesehen hat. Mir sind noch keine Commands/Selections/Interactors oder sogar ein Notification Framework[1] untergekommen. Zumindest nicht abstrahiert und genau das ist es was das MVP ausmacht. Eine noch striktere Trennung und um noch mehr Abstraktion zu schaffen und der Presenter ist dafür da um die oben genannten Dinge zu koordinieren.

[1] Die Java-Listener-Geschichte ist kein Framework. Das was gemeint ist geht schon z.B. Richtung EventBus.
 

rme

Top Contributor
Dass die Inputs über den Controller gehen, ist mir bewusst - deshalb sprach ich ja von "beide Richtungen" bei ihm, denn im klassischen MVC geht die andere Richtung (Model -> View) nicht über Controller, bei MVP hingegen schon. Allerdings interessiere ich mich nicht sonderlich für sowas, deshalb wirst du wohl Recht haben :)
 

nvidia

Bekanntes Mitglied
][...], denn im klassischen MVC geht die andere Richtung (Model -> View) nicht über Controller, bei MVP hingegen schon. [...]

Beim "klassischen MVP" geht die Kommunikation zwischen Model und View genauso wenig über den Presenter. Die View zieht sich die Daten direkt aus dem Model (bzw. fliegen die Daten über das Notification Framework/Messaging Framework umher). Wüsstest du auch wenn du dich dafür interessieren würdest (siehe verlinktes Pdf).
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
hdi keylistener hat keinen fokus oder: listener ohne frame? Java Basics - Anfänger-Themen 10
T Variable durch Action Listener ändern Java Basics - Anfänger-Themen 2
D String value change listener Java Basics - Anfänger-Themen 2
topi WindowAdapter / Listener / Event Java Basics - Anfänger-Themen 4
L Problem mit Listener Java Basics - Anfänger-Themen 0
P Listener registrieren Java Basics - Anfänger-Themen 40
Salo JTabel Selection listener Bsp. Java Basics - Anfänger-Themen 3
W JLabel, Farbe durch Listener ändern Java Basics - Anfänger-Themen 6
M Listener für Button - Wert von Variablen verändern Java Basics - Anfänger-Themen 14
V JTable welcher Listener ? Java Basics - Anfänger-Themen 7
J Verständnis Problem Java-Listener. Java Basics - Anfänger-Themen 59
M Compiler-Fehler Using action listener Java Basics - Anfänger-Themen 1
F Listener schreiben Java Basics - Anfänger-Themen 1
P Eigene Knöpfe mit eigenem Listener Java Basics - Anfänger-Themen 5
B Listener beim Laden (deserialize) wieder hinzufügen bzw. mitspeichern? Java Basics - Anfänger-Themen 3
J Listener Java Basics - Anfänger-Themen 4
kaoZ Best Practice Verständnisfrage Listener bei lokalen Objekten Java Basics - Anfänger-Themen 8
F eigenes Listener Pattern mit Interface Java Basics - Anfänger-Themen 1
llabusch Kombinationsfeld - LISTENER Java Basics - Anfänger-Themen 0
S Eigenen Listener zu eigenen Button! Java Basics - Anfänger-Themen 5
S Listener reagieren nicht mehr Java Basics - Anfänger-Themen 3
O Laufender Timer+Action Listener in Thread VS isAlive() Java Basics - Anfänger-Themen 4
E Mein eigener Listener (Hilfe gesucht) Java Basics - Anfänger-Themen 2
K On Click listener Problem Java Basics - Anfänger-Themen 4
L JTextField/Listener Input Problem Java Basics - Anfänger-Themen 2
M Listener einerm JPanel hinzufuegen Java Basics - Anfänger-Themen 3
T Button Text mit Action Listener [Hilfe!] Java Basics - Anfänger-Themen 10
H Eigenen Listener einbauen Java Basics - Anfänger-Themen 5
K Key Listener bei 2 gleichzeitig gedrückten tasten Java Basics - Anfänger-Themen 3
M Bäume und Listener Java Basics - Anfänger-Themen 2
K Erste Schritte table Listener noob frage Java Basics - Anfänger-Themen 3
E eigenständige Listener-Klasse Java Basics - Anfänger-Themen 9
T Motion listener Java Basics - Anfänger-Themen 10
U Listener erstellen Java Basics - Anfänger-Themen 16
N Variablen aus Action Listener lesen und weiterverarbeiten Java Basics - Anfänger-Themen 12
M listener Java Basics - Anfänger-Themen 16
L Listener Problem in Klasse Java Basics - Anfänger-Themen 8
P Listener für mehrere Buttons Java Basics - Anfänger-Themen 3
L Window Listener Java Basics - Anfänger-Themen 2
Kenan89 JTable: Listener Java Basics - Anfänger-Themen 4
N Klassen auf den Action Listener in einer andere Klasse zugreifen Java Basics - Anfänger-Themen 6
A action listener Java Basics - Anfänger-Themen 8
M Netbeans Listener - Anonymous, inner class, main class? Java Basics - Anfänger-Themen 4
K Action Listener reagiert nicht auf Button druck mehr??? Java Basics - Anfänger-Themen 4
E Mehrere Listener auf einen Button? Java Basics - Anfänger-Themen 3
P Input/Output InputStream Listener? Java Basics - Anfänger-Themen 7
X Problem bezüglich Key Listener Java Basics - Anfänger-Themen 3
Y Button hört nicht auf Listener Java Basics - Anfänger-Themen 5
H JTable, Listener und CellEditor Java Basics - Anfänger-Themen 8
H Listener und Events entfernen Java Basics - Anfänger-Themen 2
B OOP Eigener Event-Listener erstellen Java Basics - Anfänger-Themen 4
M Listener Objekte Java Basics - Anfänger-Themen 12
S Applet Key Listener Java Basics - Anfänger-Themen 6
J Action Listener Java Basics - Anfänger-Themen 2
G Probleme mit Listener Java Basics - Anfänger-Themen 27
B Wert einer Variable mit Listener ueberwachen Java Basics - Anfänger-Themen 3
F Port Listener Java Basics - Anfänger-Themen 9
J JComboBox Listener Java Basics - Anfänger-Themen 6
J Window-Listener funktionieren nicht Java Basics - Anfänger-Themen 7
N Frage zu Listener für Textfelder Java Basics - Anfänger-Themen 5
Benji0815 Eigenen Listener schreiben Java Basics - Anfänger-Themen 13
M Probleme beim Aufruf von Listener in anderer Klasse Java Basics - Anfänger-Themen 9
S Key-Listener richtig "einbauen" Java Basics - Anfänger-Themen 42
S Listener von ausserhalb aufrufen Java Basics - Anfänger-Themen 2
S Action Listener Java Basics - Anfänger-Themen 6
Sweety Listener in Swing Java Basics - Anfänger-Themen 8
Hamstinator Design und Listener in verschiedenen Klassen Java Basics - Anfänger-Themen 6
Developer_X Mouse MOTION listener example Java Basics - Anfänger-Themen 5
J Mouse-Listener Java Basics - Anfänger-Themen 3
I Listener Klassen in Package Java Basics - Anfänger-Themen 3
StickToFreak Applet -> GameLoop + Listener / Listener funktioniert nicht Java Basics - Anfänger-Themen 22
B externer Listener für Zeichenbereich? Java Basics - Anfänger-Themen 2
D dialog listener? Java Basics - Anfänger-Themen 2
G Key Listener arbeitet Fehlerhaft Java Basics - Anfänger-Themen 6
C Listener und Events Java Basics - Anfänger-Themen 10
E Listener Java Basics - Anfänger-Themen 2
G jtable listener wenn zeile markiert wird Java Basics - Anfänger-Themen 6
S Action Listener Funktioniert nicht Java Basics - Anfänger-Themen 6
D Kombinationsfeld => Realisierung im Listener? Java Basics - Anfänger-Themen 2
G LIstener bei JavaMail Java Basics - Anfänger-Themen 2
G Context Listener des Apache Tomcat verwenden Java Basics - Anfänger-Themen 4
D Listener bzw. Interfaces Java Basics - Anfänger-Themen 7
A Wo/Wie Event Listener Java Basics - Anfänger-Themen 3
G Window Listener? Java Basics - Anfänger-Themen 2
G 2 Listener wiedersprechen sich. Java Basics - Anfänger-Themen 12
G Listener für JPanel für Statusmeldungen Java Basics - Anfänger-Themen 3
F Listener für Variable Java Basics - Anfänger-Themen 29
A Gibt es standardmässig in Java einen Verzeichnis-Listener? Java Basics - Anfänger-Themen 6
N Listener für datei Java Basics - Anfänger-Themen 13
S Mit Listener AWT Objekte ansprechen Java Basics - Anfänger-Themen 2
G listener für radiobutton Java Basics - Anfänger-Themen 1
G Listener Java Basics - Anfänger-Themen 5
G Listener Problem Java Basics - Anfänger-Themen 3
B Wiso funktioniet das nicht? (Listener) Java Basics - Anfänger-Themen 6
H Key Listener macht nicht das was er soll Java Basics - Anfänger-Themen 4
T Wartet Klasse auf Listener? Java Basics - Anfänger-Themen 3
D Listener? Java Basics - Anfänger-Themen 2
S Listener auf JTextfeld Java Basics - Anfänger-Themen 8
B Kommunikation zwischen Klasse und Listener Java Basics - Anfänger-Themen 2
C Benutzereingaben vor Listener abfangen Java Basics - Anfänger-Themen 5

Ähnliche Java Themen

Neue Themen


Oben