2009-08-28 8 views
2

クラスの「シングルネーム」は、クラスの使用方法の重要な側面です。ただし、通常、クラスの公開APIには明示的なステータスはありません。はい、getInstance()などの従来のメソッド名がよく使用されますが、これは私がここで参照しているものではありません。シングルトンのタグインターフェイス

「タグインターフェイス」は、メソッドやデータを含まないインターフェイスです。タグインターフェイスの例はSerializableです。

シングルトンのタグインターフェイスを定義することは有用ではありませんか?これはです:

  • より明示的にそれらを簡単にプロジェクト
  • のコードベースで識別できるようにするには、シングルトンがどのように扱われるべきか文書化するための場所を提供しています。一例として、長命オブジェクトは実り多いメモリリークの原因であり、シングルトンは決して短命オブジェクトに配線されるべきではないということが言えるだろう。

これは簡単なアイデアですが、どこにも言及していません。

+0

私は 'Serializable'インターフェースは悪い考えだと思います。シングルトンと違うものではありません。 –

+0

それらを使用するかどうかの問題は、ここで提起された問題の接線です。確かに、シングルトンには欠点があります。しかし、何らかの理由でそれらを使用しているのであれば、シングルトンタグインターフェイスを使用するのが最善ではないでしょうか? –

答えて

2

あなたはここで宗教戦争に踏み込んだことがありますが、私にはあなたのアイデアはメリットがあるようです。シングルトンがある限り、コンパイラとJVMが原子の単一性を強制することができればいいと思います。

シングルトンは、乱用される傾向があるため、議論の余地があります。人々は、グローバルな状態を秘密にすること、隠された依存関係、そして大量の過度の浪費のために、その使用ポイントに反対します。

もちろんこれらはどれも、実際にはシングルトンの概念に内在していますが、それは論争を変えません。

ここであなたのケースは、シマリスを使用することによって助けられません。なぜなら、Tomが指摘するように、それ自体は議論の余地があるからです。もちろん、Serializableがいくつかの作家の間違いであったという事実は必ずしもそれをそうするものではない。個人的には、私はそれを使用しませんが、それは間違いだと思うからではありません...私は、より良い私のユーザーのニーズに一致する状態を維持し、取得するためのより良い方法があることがわかります。

もちろん、メモリが使用されている場合は、Cloneable、EventThreadListener、およびSingleThreadModelという他のマーカーインターフェイスもあります。彼らをモデルとして使用した場合、さらに進化するかもしれません。

ちなみに、ほとんどの作家は、「マーカーインターフェイス」として「タグインターフェイス」と呼ばれるものを参照していると思います。大したことではありませんが、トピックに関する他の考えを探すのに役立ちます。

1

これは興味深いアイデアですが、私はそれがどれほど有用であるかわかりません。あなたの3番目の弾丸ポイントは素晴らしい点です。

もっと良い議論は、「なぜシングルトンですか?」です。あなたは確かにGoogle Singleton Detectorがそれらを見つけて駆除のために識別するのを楽にしています。彼らのFAQは私の見解を長らく表現することができます。

0

DI/IoCコンテナを使用してオブジェクトの有効期間を管理するのはなぜですか?あなたが言うように、クラスのライフタイムは、その公開インターフェースに反映される必要はありません。

0

私は、上記のTrueWillに、DIフレームワークを使用してオブジェクトのライフサイクルを処理することについて同意します。 Guiceを使用すると、シングルトンにタグを付けるためのシングルトンアノテーションが与えられます。:)