2011-02-03 13 views
3

以前はグローバルクラスにシングルトンを使用していました。しかし、私は今、これらが好きではない単体テストを使用しています!グローバルまたは「悪」シングルトンには何かの点がありますか?

グローバルに関する基本的な質問をしたいと思います。それらのポイントは何ですか?必要なときにクラスの新しいインスタンスを作成すると何が問題になりますか?

+1

"グローバルに関する基本的な質問をしたいのですが、そのポイントは何ですか?必要なときにクラスの新しいインスタンスを作成するのに間違っていますか?" 私はあなたの質問を理解できないと思います。必要なときにクラスの新しいインスタンスを作成することには何も問題はありません。 – iuiz

+0

例を挙げて説明しましょう:すべてのクラスでログを使用するアプリケーションでは、ロギングクラスの同じインスタンスにアクセスするシングルトンを使用するのではなく、毎回ログクラスを使用しますか?おそらく、これはより多くのメモリを使用するでしょうか?私はいくつかの知識を持っているように感じますが、基本が欠落しています! @iuiz –

答えて

3

シングルトンは、問題が発生する可能性があります。問題が発生することはありません。

私はあなたにこの問題に関する私の考えのリストを与えることを試みる:

  • 最も厳しいが、あなたのソフトウェアは、円形の依存関係を持っていること、でしょう。 SOAアーキテクチャーで作業している場合は、慎重でないと非常に高速に実行できます。

  • また、シングルトンはクラスの非常に密接な結合につながることがあり、テスターとしての仕事は本当に難しいものになります。

  • 大きなプロジェクトで作業し、別のクラスがシングルトン変更のインスタンスを取得できるようにする場合は、多くのコードを変更する必要があります。これはシングルトンなしでも発生する可能性がありますが、シングルトンでより頻繁に起こるという気持ちがあります。

しかし、時にはシングルトンが良いアイデアであり、あなたはそれに固執する必要があります。 AS3でも、有名なプライベートクラスの引数コンストラクタの回避策を使ってシングルトンを使用できます。シングルトンを使用しない場合の経験則として、クラスが他のシングルトンへの参照をたくさん必要とする場合、私は考えてみることをお勧めします。 また、シングルトンをテスト可能にすることもできます。あなたはこのSOスレッド読みください

4

:個人的にWhat is so bad about Singletons?

を、私はログのようなもののためにシングルトンのためにすべての思い、別の表示リスト枝から/リドゥスタック、ローカライズおよび通知を元に戻す - イベントがISNをバブリングするとき」本当にオプションです。

いつも理想的というわけではありませんが、シングルトンは確かにその場所を持っていて、何人かの純粋主義者が何を言っているかにかかわらず、開発をもっと簡単にすることができます。

関連する問題