特定のデザインにアプローチする方法について質問があります。私は、アプリケーションのチャットクライアントを作成しています。私の実装にはいくつかのGUIがあります.1つはログイン画面、2つは登録画面、もう1つはチャットGUIです。私は1つのスレッドが、ConnectionHandlerであるログイン画面が始まったときに開始したいと思っています。基本的には、SynchronizedQueに基づいてサーバーにすべてのコマンドを送信します。 。アイデアは、このスレッドがアプリケーションの存続期間中に実行されるようにすることです。ソフトウェアコンポーネント用の静的Javaオブジェクトの使用
基本的に、ログイン画面はSynchronizedQueにメッセージを送信し、ConnectionHandlerは更新されたことを読み取り、メッセージをソケットに送信して送信します。
この場合、正しいオブジェクト指向のアプローチですか?私はその静的オブジェクト、変数などを読み取っている正しいオブジェクト指向のアプローチではありません。基本的には、メモリに座って他のクラスと通信するコンポーネントを実装するための設計哲学についての質問です。
EDIT: ちょうどこれを書いている時点で、私の心に浮かんもう一つのアイデアは、MessegeQueHandlerクラスの静的オブジェクトMessageQueを置くことですので、MessegeQueHandlerクラスは自由に作成することができますが、messegeのQUEはに存在しています背景は少しオブジェクト指向である可能性があります。
ガイダンスをありがとう。
私はあなたの設計を本当に理解していませんが、 'static'変数と' static'メソッド(コンストラクタを含む)はあなたのコードをテストするオプションを制限します(特に_unit testing_の場合)。コードを再利用したい場合や、システムのアーキテクチャを変更する場合は、最初は非静的なデザインを作成するためのより多くの先験的な作業があるかもしれないという事実とバランスを取る必要があります。 –
@james私のデザインは基本的に3です.GUI:2つのテキストボックスを持つ登録画面またはチャットアプリ画面につながるログイン画面。私は接続arroundを渡してはいけませんが、SynchronizedQueコレクションを読み取るアプリケーションの開始時に開始する1つのスレッドを持って、私はSynchronizedQueを静的にしたいので、私はすべてのGUIからサーバーにmessegesを追加することができます私は毎回新しいリストを作成しなければならないからです。この問題にはよりよいアプローチがありますか? –