0

インスタンス変数の遅延初期化を使用する必要がある実用的なシナリオを理解したいと思います。すべてのスレッドで同じファイル ハンドラーを使用できるシナリオでは、静的変数にシングルトン パターンを使用しましたが、実際に使用できるシナリオについてはよくわかりません。

よろしく、 ラマカント

4

3 に答える 3

1

シングルトンがリソースを大量に消費する場合 (メモリ、処理能力、帯域幅、ネットワーク ポートなど) はいつでも、オンデマンドでのみ作成する必要があります。

もう 1 つの理由: シングルトンを初期化するためのリソースが、実際にシングルトンが必要な場合にのみ存在する場合、システムをより堅牢にすることができます。たとえば、シングルトンが印刷スプーラであるとします。現在システムにプリンターがない場合、存在しないプリンターに接続しようとするスプーラーを割り当てる価値はありません。システムにプリンターがない場合、ユーザーは決して印刷を要求してはならないため、遅延スプーラーは明示的なロジックなしで正確に正しい動作を提供します。ユーザーがプリンティングを要求することはないため、スプーラーが初期化されることはなく、接続試行が失敗することはありません。

遅延初期化が理にかなっている可能性のあるリソース集約型シングルトンのその他の例: ロガー、独自の SOA サービス、独自の一般的なネットワーク サービス、キャッシュ マネージャー、ロード バランサー、疑似乱数ストリーム ジェネレーター、リソース マネージャー。

于 2013-04-24T17:32:28.837 に答える
0

たとえばUser、画像が関連付けられているエンティティがある場合、ユーザーを読み取るときに常に画像が必要とは限らないため、実際に必要なときにその画像を遅延してロードするようにしてください

于 2013-04-24T17:31:54.680 に答える
0

おそらく、テンプレート ライブラリのテンプレートの抽象化です。テンプレートはStrings で初期化されますが、テンプレートが実際に要求/実行されたときにのみ高速な内部表現にコンパイルされます。

于 2013-04-24T17:35:15.863 に答える