0

私のドキュメントベースのアプリケーションには、Prefs や [About] パネルなどを開くことを処理する AppController があります。また、シングルトン クラスもあります。それは基本的に受け渡されるグローバル オブジェクトであるため、誰がそれを所有する必要がありますか? それを使用するオブジェクトまたは私のAppController? 私が読んだいくつかの記事では、デリゲートのように「中心」の場所を 1 つ持つべきであると述べていますが、他の記事では、それは設計が良くなく、クラス X を使用するオブジェクトのみがクラス X を所有する必要があると述べています。

4

3 に答える 3

2

次のように静的変数に格納されているため、シングルトンを実際に所有するものはありません。

static Globals *sharedGlobals = nil;

@implementation Globals

+ (Globals *) sharedGlobals {
    if (!sharedGlobals) sharedGlobals = [[Globals alloc] init];
    return sharedGlobals;
}

メソッドが初めてsharedGlobals呼び出されると、それを呼び出したクラスによってシングルトンが作成されます。誰が最初に呼び出すかは問題ではありません。

于 2012-08-30T03:11:52.673 に答える
0

シングルトン オブジェクトは、最初に割り当てられた後にメモリ内に存在するだけだと思います。どのオブジェクトにも所有されるべきではありません。

于 2012-08-30T02:47:23.360 に答える
-1

グローバル オブジェクトを定義する方法としてシングルトンを使用しないでください。シングルトン パターンは、1 つのコンテキストで一意のインスタンスを保証する方法を提供することを目的としています。しかし問題は、依存性注入フレームワークを使用せずに Java で実装すると、パターンの実装に使用される静的メソッドにより、すべてのアプリケーション クラスがシングルトンに自由にアクセスできるようになることです。したがって、独自のモジュール/アプリケーション設計を破壊し始める方法です (正しく制御しない場合)。

シングルトン パターンを使用するかどうかを決定する前に、次の投稿をご覧ください (反対と賛成の両方)。

于 2012-08-30T06:44:19.467 に答える