問題タブ [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.
objective-c - Objective-C シングルトンはどのように見えるべきですか?
私のシングルトンアクセサーメソッドは、通常、次の変形です。
これを改善するために何ができますか?
c# - asp.net アプリケーションで使用するためにクラス ライブラリにキャッシュを正しく実装する
asp.net アプリケーションで使用しているクラス ライブラリにキャッシュを実装しています。
キャッシュを更新するための静的メソッドを使用して、シングルトン パターンとしてキャッシュ オブジェクトを作成しました。これは、キャッシュする必要があるデータのコレクションをメンバー変数/プロパティにロードするだけです (もちろん、いくつかのロック ロジックを取得しました)。呼び出すだけでデータにアクセスできるので、これは良い方法だと思いました
いくつかのキーで分割された大量のデータを格納するために、新しいキャッシュ オブジェクトを作成しています。私が言っているのは、新しいキャッシュを作成しているということですが、これはすべてのデータを一度にロードするのではなく、アクセスされたキーごとにコレクションを保存します。
今回はガベージコレクションについての質問が持ち上がりました。大量のデータを保存しているので、いきなりGCされたらもったいないですよね?これは単なるシングルトン パターンであるため、データがキャッシュに保持されることを保証するものは何もありません。
だから私の質問は - この状況を処理するためにキャッシュを実装するためのベストプラクティスは何ですか? 私はこれに対する非常に複雑なソリューションが本当に好きではありません.System.Webにキャッシュがあることは知っていますが、これは単なるクラスライブラリであるため、少し「ずれている」ようです.
design-patterns - GOF シングルトン パターンに代わる実行可能な方法はありますか?
それに直面しよう。シングルトン パターンは、大群のプログラマーがフェンスの両側にいる非常に物議を醸すトピックです。Singleton は単に栄光に満ちたグローバル変数にすぎないと感じる人もいれば、パターンで誓ってそれを絶え間なく使用する人もいます。ただし、シングルトン論争が私の質問の中心にあることを 望んでいません。誰もが綱引きをして戦い、誰が勝つかを見ることができます。私が言おうとしているのは、単一の正解があるとは信じていないし、意図的に党派の論争を煽ろうとしているわけでもないということです。質問をするとき、私は単にシングルトン代替に興味があります:
GOF シングルトン パターンに代わる具体的な方法はありますか?
たとえば、過去にシングルトン パターンを使用したことが何度もありましたが、単純に 1 つまたは複数の変数の状態/値を保持することに関心がありました。ただし、変数の状態/値は、シングルトン パターンを使用する代わりに静的変数を使用して、クラスのインスタンス化ごとに保持できます。
他にどんなアイデアがありますか?
編集: これを「シングルトンを正しく使用する方法」についての別の投稿にしたくありません。繰り返しますが、私はそれを回避する方法を探しています。楽しみのために、いいですか?映画の予告編の最高の声で純粋に学術的な質問をしていると思います。「シングルトンのないパラレルユニバースでは、何ができるでしょうか?」
c++ - Windows でスレッドセーフなシングルトン パターンを作成するにはどうすればよいですか?
ここでスレッドセーフなシングルトンパターンについて読んでいます:
http://en.wikipedia.org/wiki/Singleton_pattern#C.2B.2B_.28using_pthreads.29
そして一番下には、Windows では利用できない pthread_once を使用することが唯一の安全な方法であると書かれています。
それがスレッドセーフな初期化を保証する唯一の方法ですか?
SOでこのスレッドを読みました:
そして、アトミックOSレベルのスワップと比較機能を暗示しているようです.Windowsでは次のようになります。
http://msdn.microsoft.com/en-us/library/ms683568.aspx
これは私が望むことをすることができますか?
編集:遅延初期化を行い、クラスのインスタンスが 1 つだけになるようにします。
別のサイトの誰かが名前空間内でグローバルを使用することに言及しました (そして彼はシングルトンをアンチパターンと説明しました) - どうすればそれが「アンチパターン」になるのでしょうか?
受け入れられた回答: Visual Studio 2008 を使用しているため、 Josh の回答
を受け入れました- NB: 今後の読者のために、このコンパイラ (または 2005) を使用していない場合 - 受け入れられた回答を使用しないでください!!
編集: コードは return ステートメントを除いて正常に動作します - エラーが発生します: error C2440: 'return' : cannot convert from 'volatile Singleton *' to 'Singleton *'. 戻り値を volatile Singleton * に変更する必要がありますか?
編集:どうやら const_cast<> は volatile 修飾子を削除します。ジョシュに再び感謝します。
prototype - 通常、DAO が持つべきスコープ
dao が状態を保持しないことは論外です。
しかし、クラスに最も簡単にアクセスするには、prototype(=new every time) と singleton のどちらを使用する方がよいでしょうか?
単純なオブジェクトの作成はdaoにとって安価です..通常、sessionfactoryのみを保持し、シングルトンのリストからオブジェクトにアクセスすると、同様に高価になる場合があります.
明確化: この質問の焦点は、daos の範囲設定に共通の規則があるかどうかです。
php - PHP5でのシングルトンデザインパターンの作成
PHP5クラスを使用してシングルトンクラスを作成するにはどうすればよいですか?
c# - シングルトン オブジェクトでリフレクションを使用してメソッドを呼び出す
だから私は次のものを持っています:
リフレクションを使用して DoSomething メソッドを呼び出すにはどうすればよいですか?
メソッド名を XML に保存し、UI を動的に作成するためです。たとえば、ボタンを動的に作成し、ボタンがクリックされたときにリフレクションを介してどのメソッドを呼び出すかを伝えています。DoSomething の場合もあれば、DoSomethingElse の場合もあります。
ruby - Rubyのシングルトンクラスとは正確には何ですか?
Rubyのシングルトンクラスはそれ自体がクラスですか? すべてのオブジェクトが「クラス」に属するのはそのためですか。概念はあいまいですが、クラスメソッドを定義できる理由と関係があると思います ( class foo; def foo.bar ...
)。
Rubyのシングルトンクラスとは?
.net - シングルトンの静的インスタンスを作成するこれらの方法の違いは何ですか?
最近、ライブラリがデバッグ ビルドではなくリリース ビルドとしてビルドされた場合にのみ現れるバグがありました。ライブラリは、COM ラッパーを使用した .NET dll であり、CoCreateInstance を使用して、アンマネージ C++ アプリで dll からクラスを作成しています。最終的にバグを追跡したところ、シングルトン オブジェクトへのアクセスが原因でした。シングルトン インスタンスを次のように宣言しました。
次に、次の方法でアクセスしました。
これは失敗していました。次のように変更します。
問題を修正しました。最初の使用法が機能しなかった理由と、どちらの方法でも欠点があるかどうかについてのアイデアはありますか?
リリース dll は、別のマネージド アプリから完全に使用できるようでした。
c# - C# の使い捨てシングルトン
「static readonly T Instance = new T();」を使用するシングルトンがあります。パターン。しかし、T が使い捨てであり、実際には単体テストのために破棄する必要がある場合に遭遇しました。このパターンを変更して使い捨てシングルトンをサポートするにはどうすればよいですか?
私が望むインターフェースは次のようなものです:
注 - もちろん、パターンはスレッドセーフでなければなりません。
編集- 本番コードの目的で、これは真のシングルトンです。問題は、いくつかのファイルをロックすることです。そのため、単体テストでのクリーンアップのために、それを破棄する必要があります。
可能であれば、再利用できるパターンも希望します。