Zurück   Flashforum > Flash und Server > Flash Media Server

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 11-09-2008, 09:05   #1 (permalink)
a.k.a maddin79
 
Benutzerbild von madflanderz
 
Registriert seit: Jul 2003
Ort: berlin f-hain
Beiträge: 1.693
[ Java ] - Wie mache ich einen Eventdispatcher?

Ich bin seit gestern am rumsuchen und komme einfach nicht weiter. ich suche nach einer möglichkeit meine klassen über Events lose zu koppeln so wie in AS mit Eventdispatchern. Wo und wie kann man da ansetzen?

Das einzige was ich gefunden habe ist erstmal Observer/Observable, hier mal etwas code der aber leider nicht funktioniert.

class MyObservable
Code:
package de.zweimaleins.asterisk.models;

import java.util.Observable;

public class MyObservable extends Observable {
	
	public void startTest()
	{
		this.notifyObservers();
	}
	
}
class MyObserver
Code:
package de.zweimaleins.asterisk.test;

import java.util.Observable;
import java.util.Observer;

public class MyObserver implements Observer {

	public MyObserver() {
		// TODO Auto-generated constructor stub
	}

	@Override
	public void update(Observable arg0, Object arg1) {
		// TODO Auto-generated method stub
			
		System.out.print("MyObserver.update()");
	}

}

Test Case
Code:
package de.zweimaleins.asterisk.test;

import java.util.Observable;
import java.util.Observer;
import de.zweimaleins.asterisk.models.*;

public class ObserverTest implements Observer {

	private User user;
	
	@Override
	public void update(Observable arg0, Object arg1) {
		// TODO Auto-generated method stub

	}

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		System.out.print("ProgrammersBase.NET \u0021");

		User user = new User();
		MyObserver obs = new MyObserver();
		
		
		user.addObserver( obs );
		
		// hier sollte jetzt eigentlich obs.update() aufgerufen werden, geht aber nicht
		user.startTest();
		
	}

}
Selbst wenn die version funktionieren würde reicht sie mir eigentlich nicht aus, ich will am liebsten echte events versenden die auch daten enthalten können.



gruß mad
__________________
www.madflanderz.de

ø,¸¸,ø¤º°`°º¤ø,¸¸,ø¤º°` _ addicted to bass _ `°º¤ø,¸¸,ø¤º°`°º¤ø,¸¸,ø
madflanderz ist offline   Mit Zitat antworten
Alt 11-09-2008, 09:57   #2 (permalink)
a.k.a maddin79
 
Benutzerbild von madflanderz
 
Registriert seit: Jul 2003
Ort: berlin f-hain
Beiträge: 1.693
ok, das geht jetzt, setChanged() hat gefehlt.

class MyObservable
Code:
package de.zweimaleins.asterisk.models;

import java.util.Observable;

public class MyObservable extends Observable {
	
	public void startTest()
	{
		setChanged(); 
		this.notifyObservers();
	}
	
}
trotzdem gefällt mir das ganze noch nicht, weil alles immer nur über die update methode läuft. ich würde gerne die möglichkeit haben verschiedene methoden aufzurufen.
__________________
www.madflanderz.de

ø,¸¸,ø¤º°`°º¤ø,¸¸,ø¤º°` _ addicted to bass _ `°º¤ø,¸¸,ø¤º°`°º¤ø,¸¸,ø
madflanderz ist offline   Mit Zitat antworten
Alt 11-09-2008, 10:25   #3 (permalink)
Perverted Hermit
 
Benutzerbild von Omega Psi
 
Registriert seit: Mar 2004
Ort: Delmenhorst
Beiträge: 12.145
Java unterstützt kein EventModel, das dem von ActionScript 3 ähnelt.

Das Observer Pattern ist schon der richtige Ansatz meiner Meinung nach, denn das EventSystem in ActionScript 3 ist im Grunde nichts anderes. Zudem hast du in ActionScript 3 noch einen Einbruch des jeweiligen Dispatchers in einen anderen Gültigkeitsbereich durch das Delegate.

Schaue dir vielleicht ergänzend das Command Pattern an.

Und wenn es dir um lose Kopplung geht -> Dependency Injection/Inversion of control conatiner (á la Spring, [etc]). Wobei Spring ziemlich Hardcore wäre für ein kleines Projekt. Wenn du aber einen lightweight Ioc container findest, sag Bescheid.

In irgendeiner Java Magazin Ausgabe habe ich auch über die Veröffentlichung eines EventDispatchers gelesen. Und ein Delegate in Java gibt es auch... letzte Woche bei Google entdeckt. Wenn du also suchst, müsstest du fündig werden.
Omega Psi ist offline   Mit Zitat antworten
Alt 11-09-2008, 13:34   #4 (permalink)
a.k.a maddin79
 
Benutzerbild von madflanderz
 
Registriert seit: Jul 2003
Ort: berlin f-hain
Beiträge: 1.693
ich bin jeze echt überrascht, daß AS in dieser hinsicht eine nase vorraus ist. es gibt leider keine echten delegates in java. Ich werde mir jeze wohl nen kleinen Eventdispatcher selber schreiben, is ja nicht sooo viel arbeit.
danke für deine tips omega. mit spring will ich nix anfangen, hab ja auch keine GUI oder so weil ich eh nur was für den wowza server entwickeln will.
__________________
www.madflanderz.de

ø,¸¸,ø¤º°`°º¤ø,¸¸,ø¤º°` _ addicted to bass _ `°º¤ø,¸¸,ø¤º°`°º¤ø,¸¸,ø
madflanderz ist offline   Mit Zitat antworten
Alt 11-09-2008, 13:52   #5 (permalink)
Perverted Hermit
 
Benutzerbild von Omega Psi
 
Registriert seit: Mar 2004
Ort: Delmenhorst
Beiträge: 12.145
Das Delagate wird in Java bewusst vermieden, da Objekte einen Eingriff und Einsicht in andere Objekte bekommen.

Ich meinte nicht Swing - das GUI Framework, sondern den Ioc Container: http://www.springframework.org/

Geändert von Omega Psi (11-09-2008 um 13:55 Uhr)
Omega Psi ist offline   Mit Zitat antworten
Alt 11-09-2008, 14:44   #6 (permalink)
a.k.a maddin79
 
Benutzerbild von madflanderz
 
Registriert seit: Jul 2003
Ort: berlin f-hain
Beiträge: 1.693
ah hehe spring swing klingt ja fast genauso , naja bin noch neu auf dem gebiet. habe jeze einen Eventdispatcher gefunden der meinen anforderungen genügt und sich ähnlich wie AS "anfühlt":

http://java.schst.net/EventDispatcher
__________________
www.madflanderz.de

ø,¸¸,ø¤º°`°º¤ø,¸¸,ø¤º°` _ addicted to bass _ `°º¤ø,¸¸,ø¤º°`°º¤ø,¸¸,ø
madflanderz ist offline   Mit Zitat antworten
Alt 11-09-2008, 17:16   #7 (permalink)
Perverted Hermit
 
Benutzerbild von Omega Psi
 
Registriert seit: Mar 2004
Ort: Delmenhorst
Beiträge: 12.145
Das war auch der, den ich meinte... meine ich zumindest
Omega Psi ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an



Alle Zeitangaben in WEZ +1. Es ist jetzt 08:53 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele