ログ、エラー処理など、絶対に必要な場合は、以前はグローバル クラスにシングルトンを使用していました。しかし、私は今、これらを好まない単体テストを使用しています!
グローバルについて基本的な質問をしたいと思います。それらのポイントは何ですか?必要なときにクラスの新しいインスタンスを作成することの何が問題になっていますか?
ログ、エラー処理など、絶対に必要な場合は、以前はグローバル クラスにシングルトンを使用していました。しかし、私は今、これらを好まない単体テストを使用しています!
グローバルについて基本的な質問をしたいと思います。それらのポイントは何ですか?必要なときにクラスの新しいインスタンスを作成することの何が問題になっていますか?
このSOスレッドを読む必要があります: シングルトンの何がそんなに悪いのですか?
個人的には、ロギング、元に戻る/やり直しスタック、ローカリゼーション、あるディスプレイリストブランチから別のブランチへの通知などのシングルトンが好きです-イベントバブリングが実際にはオプションではない場合。
それらは常に理想的であるとは限りませんが、シングルトンは確かにその場所を持っており、一部の純粋主義者が何を言おうと、開発をはるかに容易にすることができます。
確かに、シングルトンが問題を引き起こすことがありますが、それがないと問題は発生しません。
私はあなたにこの問題についての私の考えのリストを与えるようにしています:
最も深刻なのは、ソフトウェアに循環依存関係があることです。SOAアーキテクチャーで作業している場合、注意しないと非常に速く発生する可能性があります。
また、シングルトンはクラスの非常に緊密な結合につながることが多く、テスターとしての仕事は非常に困難になります。
大規模なプロジェクトで作業していて、別のクラスがシングルトンの変更のインスタンスを取得する方法を使用している場合は、多くのコードを変更する必要があります。これはシングルトンがなくても発生する可能性がありますが、シングルトンで発生することが多いと感じています。
しかし、シングルトンが良いアイデアである場合があり、それに固執する必要があります。AS3でも、有名なプライベートクラス引数コンストラクターの回避策でシングルトンを使用できます。シングルトンを使用しない場合のヒューリスティックとして、クラスが他のシングルトンへの多くの参照を必要とするかどうかを検討することをお勧めします。また、考えれば、シングルトンをテスト可能にすることもできます。