問題タブ [singleton]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
.net - プロセス全体のシングルトン オブジェクトをどのように作成しますか?
.Net の静的フィールドの粒度の単位は、プロセスごとではなく、AppDomain ごとであると読みました。プロセス全体のシングルトン オブジェクトを作成することは可能ですか?
java - Javaでシングルトンパターンを実装する効率的な方法は何ですか?
Javaでシングルトン設計パターンを実装する効率的な方法は何ですか?
c++ - シングルトン:どのように使用すべきか
編集:別の質問から、シングルトンに関する多くの質問/回答へのリンクを含む回答を提供しました:シングルトンに関する詳細はこちら:
だから私はスレッドSingletons: good design or a crutch?を読みました。
そして議論は今も激しさを増しています。
私はシングルトンをデザイン パターン (良い面も悪い面も) と考えています。
Singleton の問題はパターンではなく、むしろユーザーにあります (申し訳ありません)。誰もが、そしてその父親は、正しく実装できると考えています (そして、私が行った多くのインタビューから、ほとんどの人は実装できません)。また、誰もが正しいシングルトンを実装できると考えているため、パターンを悪用し、不適切な状況で使用します (グローバル変数をシングルトンに置き換えます!)。
したがって、答える必要がある主な質問は次のとおりです。
- シングルトンを使用する必要がある場合
- シングルトンを正しく実装するにはどうすればよいですか
この記事に対する私の希望は、Singleton をいつ (そしてどのように) 正しく使用するかについての信頼できる情報源を (複数のサイトをグーグル検索して検索するのではなく) 1 か所にまとめることができることです。また、適切な使用法と一般的な悪い実装のリストは、それらが機能しない理由と、適切な実装の場合はその弱点を説明しています。
ボールを転がしてみましょう:
私は手を挙げて、これは私が使用しているものですが、おそらく問題があると言います.
「Scott Myers」の著書「Effective C++」での主題の扱いが好きです。
シングルトンを使用するのに適した状況 (多くはありません):
- ロギング フレームワーク
- スレッド リサイクル プール
わかった。いくつかの批判と他の実装をまとめてみましょう。
:-)
language-agnostic - シングルトンの何が問題になっていますか?
この質問で時間を無駄にしないでください。フォローアップ:シングルトンの何がそんなに悪いのか?
お気軽にSingletonでビッチしてください。
Singletonを不適切に使用すると、多くのペイントが発生する可能性があります。シングルトンでどのような問題が発生しましたか? このパターンの一般的な誤用は何ですか?
Corey の回答を掘り下げた後、このトピックに関するいくつかの素晴らしい記事を発見しました。
c# - 使用中のメンバー変数への参照を更新しています
このシングルキャッシュオブジェクトを取得しました。これにより、プライベートIEnumerable変数を返すだけのIEnumerableプロパティが公開されます。
このメンバー変数(このキャッシュオブジェクトの単一の「インスタンス」インスタンスに存在する)を更新する静的メソッドがシングルトンオブジェクトにあります。
キャッシュが更新されている間、あるスレッドが現在このIEnumerable変数/プロパティを反復処理しているとしましょう。キャッシュが新しいローカル変数で更新され、最後に公開されたプライベート変数がこの新しいローカル変数を指すように設定されるようにしました。
参照を更新しているだけで、メモリ内の他の(古い)オブジェクトがGCによって取得されるのを待っていることはわかっていますが、問題は、新しい参照を設定するとどうなるか100%わからないということです。他のスレッドが突然、新しいオブジェクトまたはIEnumerableインターフェイスを通過した古いオブジェクトを反復処理しますか?それが通常の参照であったなら、私は「いいえ」と言うでしょう。呼び出し元のスレッドは古いオブジェクトで動作しますが、これがIEnumerableにも当てはまるかどうかはわかりません。
削除されたクラスは次のとおりです。
php - データベース接続用のグローバルまたはシングルトン?
PHPでデータベース接続にグローバルではなくシングルトンを使用する利点は何ですか? グローバルの代わりにシングルトンを使用すると、コードが不必要に複雑になると思います。
グローバルなコード
シングルトンを使用したコード
グローバルまたはシングルトン以外のデータベース接続を初期化するより良い方法がある場合は、それについて言及し、グローバルまたはシングルトンよりも優れていることを説明してください。
actionscript-3 - Actionscript 3 でシングルトン パターン クラスを実装する最良の方法は何ですか?
AS3 ではプライベート コンストラクターが許可されていないため、シングルトンを構築し、コンストラクターが "new" によって明示的に作成されていないことを保証する唯一の方法は、単一のパラメーターを渡して確認することです。
2 つの推奨事項を聞いたことがあります。1 つは呼び出し元をチェックして、それが静的な getInstance() であることを確認すること、もう 1 つは同じパッケージ名前空間にプライベート/内部クラスを配置することです。
コンストラクターで渡されたプライベート オブジェクトは望ましいように見えますが、同じパッケージにプライベート クラスを含めることができるようには見えません。これは本当ですか?さらに重要なのは、シングルトンを実装する最良の方法ですか?
language-agnostic - singleton クラスの誤用の最も一般的な例
非常に魅力的ですが、シングルトン クラスを使用してはいけないのはどのような場合ですか? 避けるべき「単音炎」の最も一般的な例のリストがあれば、非常に良いでしょう.
design-patterns - シングルトンパターンの短所または短所は何ですか?
シングルトン パターンは、GoFのパターン ブックの完全な有料メンバーですが、最近、開発者の世界では孤立しているようです。特にfactory classesでは、まだかなり多くのシングルトンを使用しています。マルチスレッドの問題については少し注意する必要がありますが (実際には他のクラスと同様)、なぜそれらがそれほどひどいのかわかりません。
特にスタック オーバーフローは、誰もがシングルトンが悪であることに同意していると想定しているようです。なんで?
「事実、参考文献、または特定の専門知識」で回答を裏付けてください
design-patterns - コミュニティはいつシングルトンを使用することが適切であると信じますか?
重複の可能性:
シングルトン:どのように使用する必要がありますか
Ewan Makepeaceのシングルトンパターンに関する以前の優れた質問に続いて、「コミュニティはいつシングルトンを使用することが適切であると信じているのか」と尋ねると思いました。
批評の例を挙げましょう。
「IconManager」シングルトンがあります。まず、アイコンがディスク上のどこにあるかを示すプロパティファイルを読み取り、次にすべてのアイコンを読み取り、将来の使用のためにキャッシュします。
アイコンはUI全体(タブ、テーブル、フレームなど)で使用できます。したがって、静的なシングルトンメソッドを介してアイコンにアクセスするのは非常に便利です。また、アイコンが1回だけ読み取られるようにしたい(必要になるたびにディスクからアイコンを読み取るのが非常に遅い場合)コミュニティは、これがシングルトンの適切な使用法であると信じていますか?そうでない場合、他にどのように実装されている可能性がありますか?
シングルトンの他の有効な使用法はありますか?