3

私はデザインパターンについて少し初心者です。シングルトンを使い始めたばかりで、データを一元化された場所に便利に保存するためにシングルトンを使用することを考えていましたが、そうする前に、これは正しい設計ではないと言っているように見えるいくつかの投稿を読みました (または、混乱している可能性があります)。 、しかし、理由は明らかではありません。私がやりたいことはこれです:

オブジェクトのいくつかの配列を一元化された場所に保存して、オブジェクトを処理して永続化できるようにします。

シングルトンでない場合、これを行うためのより良い方法はありますか? これが悪い設計である場合、その理由を知ることは素晴らしいことです.

4

3 に答える 3

5

シングルトン パターンの有用性と適用可能性は、適用される環境に大きく依存します。

それに関する最大の不満は、シングルトンに基づくコードのテスト容易性です。その他の不満には、並行環境で発生する可能性のある潜在的な問題や、シングルトンが所有するリソースを再利用しようとして直面する可能性のある問題が含まれます。

ただし、これらの問題はどれも、iOS 用のアプリを開発する上で大きな問題にはなりません。

  • 通常、アプリケーションのモデルにはシングルトンが 1 つしかありません。たとえば、ランタイム構成からインスタンス化するクラスの名前を読み取るか、ランタイム環境から推測することにより、テスト容易性を確保するためにスワップ可能にすることができます。
  • iOS アプリは並行構成を使用しますが、大部分はシングル スレッドです。
  • iOS アプリは、エンド ユーザーがそれらを強制終了するまで実行されます。終了した時点で、オペレーティング システムはリソースを自動的に再利用します。シングルトンを強制終了しても、特定の問題は発生しません。

これらの考慮事項により、シングルトン パターンは iOS アプリの一般的な実装手法になりました。その欠点を知っていて、それらに対処する意思がある限り、iOS 用のアプリでシングルトン パターンを使用することにまったく問題はありません。

于 2013-08-01T02:51:30.337 に答える
0

この習慣は他の言語にも転用できるので、私は justin に大いに同意します。シングルトンを検討するときは、「このクラスのインスタンスを 1 つだけ使用することで、アプリケーションにどのようなメリットがあるか」という質問を自問してください。私は世界で最も経験豊富なプログラマーではありませんが、シングルトンを作成する正当な理由をまだ見つけていません。さらに、ほとんどのフレームワークには、ファイル/ディレクトリにアクセスするものなど、合理的に実装されたシングルトンが既に付属しています ([NSFileManager defaultManager] など)。それでも、Apple は次のように提案しています。

「ファイルマネージャーでデリゲートを使用して、ファイルベースの操作の完了に関する通知を受け取る予定の場合は、共有オブジェクトを使用するのではなく、(init メソッドを使用して) NSFileManager の新しいインスタンスを作成する必要があります。」

疑問が 1 つでもあるとすれば、そのクラスはSingleton であってはなりません。

于 2013-11-27T23:41:12.010 に答える