一部のメッセージ処理コードで使用している構造に関するアドバイスを探しています。抽象クラスの拡張の間で変数を共有する
私が処理しているメッセージは、基本的にさまざまな「セグメント」を持つ文字列です。私は、セグメントを処理するいくつかのクラスを作成しました(クラスごとに1つのセグメントタイプ)。セグメントリーダーは、一般的なメソッドを含むAbstractクラスの拡張です。最後に、各セグメントリーダは公開メソッドとプライベートメソッドを持ちます。今、それが必要とされたように、コードの最初のバージョンは、各セグメントのリーダーのコンストラクタにメッセージを渡す:
SegmentReaderType1 r = new SegmentReader1(message)
String item = r.getSomethingInteresting()
これは非常に不器用なようだ - 私は(静的メソッドを使用して)しようとした:
String item = SegmentReaderType1.getSomethingInteresting(message)
これはきれいですが、一部の読者は内部的に複雑なので、メッセージの多くは(内部的に)渡されています(これは良いか悪いのか分かりません)。
代替手段として、メッセージを抽象的な親から読者に「共有」するメカニズムがあるのだろうかと疑問に思っていましたか?たぶんシングルトンのMessageHolderが良い選択でしょうか?
コードは機能しますが、私は本当に優れたコーディングテクニックを開発しようとしています。任意の援助を受けて
シングルトンの場合、MessageHolder.getInstance()。setMessage(message)にメッセージを一度格納し、抽象クラスのメソッドを使用してメッセージにアクセスすることを考えていました。String message = getMessage() .getInstance()。getMessage() – skyman
私は、抽象クラスの静的フィールドは、クラスのすべての拡張機能で見られると思いますか? – skyman
はい。さらに、静的に保護されるようにすることで、同じパッケージ内のクラスと拡張機能だけがそれを使用できるようになります。 私があなただったら私はMessageHolderを作っていないでしょう、あなたのプログラムは本当に面倒です。 – reederz