wäre es nicht einfacher eine Art Managerklasse zu haben, die alle Klassen kennt und die Kommunikation unter den Klassen regelt, als jede Klasse die anderen Klassen kennen lassen ?!
Also ich habe es jetzt so hinbekommen wie cello das gesagt hat, aber wie meinst du das mit der Managerklasse, wie kann man sowas machen?
Würde mich über ein Beispiel oder eine nähere Erläuterung freuen.
public class ManagerKlasse {
private static ManagerKlasse manager = null;
private ArrayList listClass;
private ManagerKlasse() {
listClass = new ArrayList();
}
public static ManagerKlasse getManager() {
if(manager == null) {
manager = new Manager();
}
return manager;
}
public void addNewClass(MeineKlasse k) {
if(!listClass.contains(k)) {
listClass.add(k);
}
}
public void sendAction(Klasse origin) {
for(int i = 0; i < listClass.size(); i++) {
MeineKlasse k = (MeineKlasse)get(i);
if(k != origin) {
((Klasse)listClass.get(i)).reagiereAufSendAction();
}
}
}
Code:
public abstract class MeineKlasse {
public MeineKlasse() {
ManagerKlasse.getManager().addNewClass(this);
}
public void actionToOtherClasses() {
ManagerKlasse.getManager().sendAction(this);
}
}
In den Klassen:
Code:
public class Klasse1 extends MeineKlasse{
public Klasse1() {
super();
}
So in etwa (achtung, wurde aus dem Kopf gehackt *g*)
D.h. du hast eine ManagerKlasse die sich alle Klassen in einer ArrayList speichert. Diese Klasse ist als Singelton implementiert, sodass davon nicht mehrer Instanzen herumschwirren (und die Klassen sich bei versch. Instanzen anmelden). Jede Klasse erbt von der Klasse "MeineKlasse", dadurch wird gewährleistet, dass jede sich bei der ManagerKlasse anmeldet. Will eine Klasse nun eine Nachricht an die anderen schicken ruft sie einfach "actionToOtherClasses()"
Irgendwie verstehe ich noch nicht ganz was es mit dieser Methode auf sich hat.
Kannst du es mir bitte erklären oder einen Link o.ä. mit einem Anwendungsbeispiel geben?
Irgendwie verstehe ich noch nicht ganz was es mit dieser Methode auf sich hat.
Kannst du es mir bitte erklären oder einen Link o.ä. mit einem Anwendungsbeispiel geben?
In dieser methode wirde die ArrayList "listClass" durchlaufen, die alle Klassen speichert.Aufgerufen wird die Methode von einer der Klassen (Parameter origin).
Code:
MeineKlasse k = (MeineKlasse)get(i);
if(k != origin) {
Hier wird getestet ob es sich bei der aktuellen Klasse nicht um die aufrufende handelt. Wenn nicht:
wird die methde reagiereAufSendAction in jeder anderen Klasse aufgerufen.
D..h wenn die eine Klasse den anderen wsa mitteilen will, dann braucht sie nur sendAction(this) aufrufen und alle anderen werden benachrichtigt !