ich hab eine grundsätzliche Frage zu einem Übungsprogramm, dass ich derzeit versuche zu schreiben.
Ich möchte eine Artikel und Kundenverwaltung in einem Programm bauen das mit JInternalFrames arbeitet.
Die Oberfläche steht schon so weit und auch das aufrufen dieser beiden Fenster funktioniert.
Jetzt gibt es in einer Artikelverwaltung natürlich eine Artikelliste diese habe ich als LinkedList<Article> deklariert und in eine Klasse gepackt um dort spezifischere Funktionen für andere Klassen bereit zu stellen. Diese Liste soll Serialisiert werden. Da sie bisher mit static gekennzeichnet war ging das natürlich nicht (siehe meinen letzten thread).
Da ich jetzt aber in beiden Fenstern diese Artikelliste haben möchte und es aber nicht 2x deserialisiert werden soll würde ich gerne wissen wie ich es anstellen kann, dass:
• Liste nur einmal! verfügbar.
• Alle anderen auf das aktuelle ArtikelListen-Objekt zugreifen und kein neues erstellen (was zum erneuten deserialisieren führen würde)
Kann ich die Liste einmalig instanzieren und dann in eine statische Variable schieben damit andere auf die statische Referenz zugreifen? Oder wie löst man sowas am Besten?
Generell kannst du Dinge einfach nur einmal erzeugen, dann ist sicher gestellt, dass es nicht mehrere davon gibt. Man kann das ganze auch erzwingen mit dem Singleton-Pattern, was aber ziemlich unschön ist und nicht leichtfertig verwendet werden sollte.
In deinem Fall sollten andere Klassen einfach deine Instanz der Artikelverwaltung nach der Liste fragen können.
Aber was mach ich wenn es die Artikelverwaltung noch garnicht gibt? Also wenn ich z.B. mein Programm starte und dann auf die Kundenverwaltung klicke. Sollte mein Hauptfenster die Liste dann besitzen? Das klingt für mich ziemlich falsch...
Du möchtest also in deiner Kundenverwaltung auf die Artikelliste zugreifen können, ohne dass es die Artikelverwaltung gibt...
Wenn die Artikelliste also entweder unabhängig von Artikelverwaltung oder Kundenverwaltung oder sogar von beiden existieren kann, dann würde ich sie dem Teil des Systems zuordnen, dem Artikelverwaltung und Kundenverwaltung angehören.
Dazu würde ich übrigens eine eigenen Klasse schreiben und nicht die Darstellung mit dem Modell vermischen.
Au man ... :bloed: ist ja vollkommen klar danke für die Erinnerung, dass ich vergessen habe mein Hauptfenster nicht auch als Hauptklasse zu verwenden. Dachte mir am Anfang naja die main kann ja zum testen mal im Fenster bleiben und ich zieh se dann später eh raus.... jetzt ist die gewachsen und gewachsen und ich hab ganz vergessen, dass ich noch eine "Controller"-Klasse erstellen muss.