Hallo Leute!
Ich habe ein Problem bei der Implemenierung des Observers (Beobacher);
Ich habe eine Klasse "File" die alle Atribute einer eingelesenen Datei beinhaltet.
Da ich die Atribute bereits anzeigen will bevor die ganze Datei eingelesen ist muss sich das Fenster (Startfenster) stets
erneuern wenn wieder etwas neues hinzukommt. Daher der Observer!
Miene Impl.:
Die Frage ist nun, wie meld ich das Fenster beim Observable (File) an?
Beim Startfenster müßte ich ja eigentlich nur "addObserver(this);" eingeben oder? Aber das geht scheinbar nicht. Die update-Methode in Startfenster wird bei mir nie aufgerufen obwohl ich Notify() ausführe. Kann mir jemand helfen? Ich hab schon im Netz nach Observer gesucht aber dort fand ich nur Klassendiagramme die zwar logisch sind aber mir nicht klar machen wie ich den Observer nun implementiere. Vielleicht hat einer von euch auch ein Codebeispiel irgendwo rumzuliegen. Das hilft bestimmt auch schon.
Ich habe ein Problem bei der Implemenierung des Observers (Beobacher);
Ich habe eine Klasse "File" die alle Atribute einer eingelesenen Datei beinhaltet.
Da ich die Atribute bereits anzeigen will bevor die ganze Datei eingelesen ist muss sich das Fenster (Startfenster) stets
erneuern wenn wieder etwas neues hinzukommt. Daher der Observer!
Miene Impl.:
Code:
public interface Observable
{ void addObserver(Observer o);
void removeObserver(Observer o);
void Notify();
}
public interface Observer
{
void update(Observable oa);
}
public class File:Observable
{
private ArrayList observList=new ArrayList();
...verschiedene Methoden für speicherung der Atribute
public void addObserver(Observer o)
{
Console.WriteLine("in addObserver");
observList.Add(o);
}
public void removeObserver(Observer o)
{
observList.Remove(o);
}
public void Notify()
{
Console.WriteLine("in Notify");
foreach (Observer o in observList)
{
o.update(this);
}
public class StartFenster:Form,Observer
{
public StartFenster()
{
.... wie meld ich jetzt das Fenster beim Observable an?
}
public void update(Observable o){....}
Die Frage ist nun, wie meld ich das Fenster beim Observable (File) an?
Beim Startfenster müßte ich ja eigentlich nur "addObserver(this);" eingeben oder? Aber das geht scheinbar nicht. Die update-Methode in Startfenster wird bei mir nie aufgerufen obwohl ich Notify() ausführe. Kann mir jemand helfen? Ich hab schon im Netz nach Observer gesucht aber dort fand ich nur Klassendiagramme die zwar logisch sind aber mir nicht klar machen wie ich den Observer nun implementiere. Vielleicht hat einer von euch auch ein Codebeispiel irgendwo rumzuliegen. Das hilft bestimmt auch schon.