1. ホーム
  2. java

[解決済み] なぜスタティックメソッドではなく、シングルトンを使うのか?

2022-12-16 12:25:23

疑問点

ヘルパークラスやユーティリティクラスに関するこのような単純な質問に対する良い答えは見つけられませんでした。

  • なぜ静的メソッドを使用する代わりにシングルトン (ステートレス) を作成しなければならないのでしょうか。
  • オブジェクトが状態を持たないのに、なぜオブジェクトのインスタンスが必要なのでしょうか?

どのように解決するのですか?

多くの場合、シングルトンはある種の グローバルな状態 をアプリケーションに導入するために使用されます。(正直に言うと、本当に必要以上に頻繁に、しかしそれは別の時間のためのトピックです)。

しかし、いくつかのコーナーケースでは ステートレス シングルトンでも役に立つ場合があります。

  • 近い将来、ステートで拡張することを想定している。
  • あなたは オブジェクトのインスタンス を必要とします。 技術的 のような理由です。

    例 C# の同期化オブジェクト lock またはJavaの synchronized ステートメントを使用します。
  • 継承が必要な場合、つまり、同じインターフェースで異なる実装のシングルトンを簡単に置き換えることができるようにしたい場合です。

    例 このような場合 Toolkit.getDefaultToolkit() メソッドは、正確な型がシステム依存であるシングルトンを返します。
  • あなたは 参照等価 に対して センチネル値 .

    DBNull.Value をC#で表示します。