タグ付けされた質問 「singleton」

特定のクラスのアプリケーション全体のインスタンスが1つだけ存在することを保証する設計パターン。ギャングオブフォーの創造的なデザインパターンの1つ。

30
シングルトンの何が悪いのですか?[閉まっている]
休業。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善してみませんか?この投稿を編集して、事実と引用で回答できるように質問を更新してください。 4年前休業。 シングルトンパターンはの完全払込メンバーであるのGoFのパターンの本が、それは最近、むしろ開発者の世界で孤立したようです。私はまだ特に多くのシングルトンを使用しています。特にファクトリークラスでは、マルチスレッドの問題(実際には他のクラスと同様)に少し注意する必要がありますが、なぜそれほどひどいのかはわかりません。 スタックオーバーフローは特に、シングルトンが悪であることに誰もが同意していると想定しているようです。どうして? 「事実、参考文献、または特定の専門知識」で回答をサポートしてください


22
Pythonでのシングルトンの作成
この質問は、シングルトンデザインパターンが望ましいかどうか、アンチパターンであるかどうか、または宗教戦争の場合ではなく、このパターンがPythonで最もPython的に実装される方法について議論するためのものです。この場合、私は「ほとんどのpythonic」を「最小の驚きの原則」に従うことを定義します。 シングルトンになる複数のクラスがあります(私のユースケースはロガー用ですが、これは重要ではありません)。単に継承したり装飾したりできるときに、追加されたガンフを使用していくつかのクラスを散らかしたくありません。 最良の方法: 方法1:デコレーター def singleton(class_): instances = {} def getinstance(*args, **kwargs): if class_ not in instances: instances[class_] = class_(*args, **kwargs) return instances[class_] return getinstance @singleton class MyClass(BaseClass): pass 長所 デコレータは、多くの場合、複数の継承よりも直感的な方法で追加されます。 短所 MyClass()を使用して作成されたオブジェクトは真のシングルトンオブジェクトですが、MyClass自体はクラスではなく関数なので、そこからクラスメソッドを呼び出すことはできません。またためm = MyClass(); n = MyClass(); o = type(n)();、その後m == n && m != o && n != …


29
Javaでシングルトンパターンを実装する効率的な方法は何ですか?[閉まっている]
休業。この質問には、より焦点を当てる必要があります。現在、回答を受け付けていません。 この質問を改善してみませんか?質問を更新して、この投稿を編集するだけで1つの問題に焦点を当てます。 2年前休業。 Javaでシングルトンパターンを実装する効率的な方法は何ですか?

20
C ++シングルトン設計パターン
最近、C ++のシングルトンデザインパターンの実現/実装にぶつかりました。次のようになっています(実際の例から採用しています)。 // a lot of methods are omitted here class Singleton { public: static Singleton* getInstance( ); ~Singleton( ); private: Singleton( ); static Singleton* instance; }; この宣言から、インスタンスフィールドがヒープで開始されていると推測できます。つまり、メモリ割り当てがあります。メモリが割り当て解除されるのはいつなのか、私にとって完全に不明確なことは何ですか?それともバグとメモリリークはありますか?実装に問題があるようです。 私の主な質問は、どのようにそれを正しい方法で実装するのですか?

17
Androidでグローバル変数を宣言する方法は?
ログインが必要なアプリケーションを作成しています。メインアクティビティとログインアクティビティを作成しました。 メインアクティビティonCreateメソッドで、次の条件を追加しました。 public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); ... loadSettings(); if(strSessionString == null) { login(); } ... } onActivityResult:ログインフォームは、このようなルックスを終了したときに実行される方法 @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); switch(requestCode) { case(SHOW_SUBACTICITY_LOGIN): { if(resultCode == Activity.RESULT_OK) { strSessionString = data.getStringExtra(Login.SESSIONSTRING); connectionAvailable = true; strUsername = data.getStringExtra(Login.USERNAME); …

29
Swiftでdispatch_onceシングルトンモデルを使用する
Swiftでの使用に適したシングルトンモデルを作成しようとしています。これまでのところ、スレッドセーフでないモデルを次のように機能させることができました。 class var sharedInstance: TPScopeManager { get { struct Static { static var instance: TPScopeManager? = nil } if !Static.instance { Static.instance = TPScopeManager() } return Static.instance! } } Static構造体でシングルトンインスタンスをラップすると、複雑な名前付けスキームなしでシングルトンインスタンスと衝突しない単一のインスタンスが許可され、かなりプライベートになるはずです。もちろん、このモデルはスレッドセーフではありません。だから私dispatch_onceは全部に追加しようとしました: class var sharedInstance: TPScopeManager { get { struct Static { static var instance: TPScopeManager? = nil static var token: dispatch_once_t …


10
シングルトン対Androidのアプリケーションコンテキスト?
シングルトンの使用に関するいくつかの問題を列挙 し、シングルトンパターンを使用するAndroidアプリケーションのいくつかの例を見たことがあるこの投稿を思い出して、グローバルアプリケーション状態(android.os.Applicationのサブクラス化と取得)を通じて共有される単一のインスタンスの代わりにシングルトンを使用するのは良い考えでしょうcontext.getApplication()を通じて)。 両方のメカニズムにはどのような利点/欠点がありますか? 正直なところ、この投稿のWebアプリケーションでのシングルトンパターンで同じ答えが得られることを期待しています。Androidに適用されます。私は正しいですか?それ以外のDalvikVMの違いは何ですか? 編集:私はいくつかの側面に関与することについて意見を述べたいです: 同期 再利用性 テスト中

10
Objective-CでGCDのdispatch_onceを使用してシングルトンを作成する
iOS 4.0以上をターゲットにできる場合 GCDを使用して、Objective-C(スレッドセーフ)でシングルトンを作成する最良の方法ですか? + (instancetype)sharedInstance { static dispatch_once_t once; static id sharedInstance; dispatch_once(&once, ^{ sharedInstance = [[self alloc] init]; }); return sharedInstance; }

26
Objective-Cシングルトンはどのように見えるべきですか?[閉まっている]
現在のところ、この質問はQ&A形式には適していません。事実、参考文献、専門知識によって回答が裏付けられることを期待していますが、この質問は、討論、議論、投票、または拡張ディスカッションを求める可能性があります。この質問を改善でき、再開できると思われる場合は、ヘルプセンターにアクセスしてください。 7年前休業。 ロックされています。質問はトピックから外れていますが、歴史的に重要であるため、この質問とその回答はロックされています。現在、新しい回答や相互作用を受け入れていません。 私のシングルトンアクセサーメソッドは通常、以下のバリアントです。 static MyClass *gInstance = NULL; + (MyClass *)instance { @synchronized(self) { if (gInstance == NULL) gInstance = [[self alloc] init]; } return(gInstance); } これを改善するために私は何ができますか?

2
なぜAppleは、ARCでシングルトンパターンを実装するためにdispatch_onceを使用することを推奨するのですか?
ARCでシングルトンの共有インスタンスアクセサーでdispatch_onceを使用する正確な理由は何ですか? + (MyClass *)sharedInstance { // Static local predicate must be initialized to 0 static MyClass *sharedInstance = nil; static dispatch_once_t onceToken = 0; dispatch_once(&onceToken, ^{ sharedInstance = [[MyClass alloc] init]; // Do any other initialisation stuff here }); return sharedInstance; } バックグラウンドで非同期にシングルトンをインスタンス化することは悪い考えではありませんか?つまり、その共有インスタンスを要求してすぐにそれに依存しているのに、dispatch_onceがクリスマスまで私のオブジェクトを作成するとしたらどうなるでしょうか。すぐ戻りませんよね?少なくともそれがグランドセントラルディスパッチの要点のようです。 なぜ彼らはこれをしているのですか?


24
シングルトン:どのように使用すべきか
編集:別の質問から私はシングルトンに関する多くの質問/回答へのリンクを含む回答を提供しました:シングルトンの詳細についてはこちら: だから私はシングルトンのスレッドを読んだ:良いデザインか松葉杖か? そして、議論はまだ激化しています。 シングルトンをデザインパターン(良い点と悪い点)と見なしています。 シングルトンの問題はパターンではなく、むしろユーザー(すみません)です。誰もが彼らの父親は、それらを正しく実装できると考えています(そして、私が行った多くのインタビューから、ほとんどの人はそうすることができません)。また、誰もが正しいシングルトンを実装できると考えているため、パターンを悪用し、不適切な状況で使用します(グローバル変数をシングルトンに置き換えます!)。 したがって、回答する必要がある主な質問は次のとおりです。 いつシングルトンを使うべきか シングルトンをどのように正しく実装しますか この記事に対する私の期待は、シングルトンを正しく使用するための信頼できる情報源(および複数のサイトを検索する必要があるのではなく)を1か所にまとめることができることです。また、アンチユーセージのリストと、それらが機能しない理由を説明する一般的な不良実装のリストと、適切な実装の弱点も適切です。 だからボールを​​転がしてください: 私は手を挙げて、これが私が使うものだと言いますが、おそらく問題があります。 私は彼の本「Effective C ++」の主題の「スコットマイヤーズ」の扱いが好きです シングルトンを使用するのに適した状況(多くはない): ロギングフレームワーク スレッドリサイクルプール /* * C++ Singleton * Limitation: Single Threaded Design * See: http://www.aristeia.com/Papers/DDJ_Jul_Aug_2004_revised.pdf * For problems associated with locking in multi threaded applications * * Limitation: * If you use this Singleton (A) within …

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.