2016-04-06 8 views
0

Ich habe eine Frage zur Vorgehensweise bei einem bestimmten Entwurf. Ich erstelle einen Chat-Client, eine Anwendung und meine Implementierung hat mehrere GUIs, einen für den Login-Bildschirm, einen zweiten für den Registrierungsbildschirm, einen dritten für die Chat-GUI. Ich möchte einen Thread starten, wenn der Anmeldebildschirm startet, ist der ConnectionHandler, im Grunde werden alle Befehle an den Server gesendet, basierend auf einer SynchronizedQue, die ich in ein MessageQue-Objekt, das ein statisches, einmaliges Objekt sein soll . Die Idee ist, dass dieser Thread die Lebensdauer der Anwendung durchläuft.Verwendung eines statischen Java-Objekts für eine Softwarekomponente

Im Grunde wird der Anmeldebildschirm eine Nachricht an die SynchronizedQue senden und dann der ConnectionHandler liest, dass es aktualisiert wurde, nimmt die Nachricht an einen Socket und sendet es weg.

Ist es ein korrekter objektorientierter Ansatz für diesen Fall? Ich habe gelesen, dass statische Objekte, Variablen usw. kein korrekter objektorientierter Ansatz sind. Im Grunde handelt es sich um eine Designphilosophie zur Implementierung einer einmaligen Komponente, die im Speicher sitzt und mit der andere Klassen kommunizieren.

EDIT: Eine weitere Idee, die damals gerade tauchte der Abfassung dieses in meinem Kopf ist das statische Objekt MessageQue in eine MessegeQueHandler Klasse zu setzen, so dass die MessegeQueHandler Klasse kann nach Belieben, aber die messege que in existieren erstellt werden der Hintergrund, der ein bisschen objektorientierter sein könnte.

Danke für die Anleitung.

+0

Ich verstehe Ihr Design nicht wirklich, aber 'statische' Variablen und' statische' Methoden (einschließlich Konstruktoren!) Schränken Ihre Möglichkeiten ein, Ihren Code zu testen (besonders für _Unit-Tests_), und sie werden zusätzliche Arbeit für Sie leisten Wenn Sie Ihren Code jemals wiederverwenden möchten oder ändern Sie die Architektur Ihres Systems. All das muss gegen die Tatsache abgewogen werden, dass es mehr Vorarbeit für Sie gibt, um überhaupt ein nicht-statisches Design zu kreieren. –

+0

@james Nun, mein Design ist im Grunde 3 GUis: Login-Bildschirm, der entweder zu einem Registerbildschirm oder einem Chat-App-Bildschirm mit zwei Textfeldern führt. Ich möchte die Verbindung nicht weitergeben, aber einen Thread am Anfang der Anwendung starten, der eine SynchronizedQue-Sammlung lesen soll. Ich möchte die SynchronisedQue statisch machen, damit ich aus jeder GUI Messages zum Server hinzufügen kann, ohne einen zu erstellen Objekte, weil ich jedes Mal eine neue Liste erstellen müsste. Würde es ein besseres Vorgehen für dieses Problem geben? –

Antwort

1

Was Sie beschreiben, ist die Singleton Pattern und ist ein sehr häufiges Muster in OO-Design und anderen Paradigmen verwendet. Also ja, es ist in Ordnung, es im OO-Design zu verwenden.

Verwandte Themen