2012-03-25 8 views
1

私はiOSのハングアップを得て、さまざまなフレームワークを扱っています。私のプロジェクトはますます複雑になってきており、私は複雑な方法でいくつかのことをやっていると思います。このような状況を処理するためのシンプルなデザインパターンがある場合私のデリゲートの代理人は...(デザインパターン)

私は思ったんだけど:

配列で開催されたプロパティの多くが付いて

のApp。各プロパティのオプションを表すNSDictionaryのNSDictionaryも保持します。

プロパティエディタ:私は今、この作業を持っている特定のプロパティのすべてのオプション

ディスプレイテーブル:詳細ビューのために

詳細ビューを編集オプションを使用して現在のプロパティを表示する表を提示:

のApp - アクセスするプロパティエディタデルへのデリゲートとして>セット自体egateの(アプリケーションの)現在のプロパティおよびプロパティのオプションのアレイ

プロパティエディタ - デリゲートとして>セット自体各詳細ビューおよびデリゲート

からプロパティオプションの適切な配列を表す詳細ビューのプロパティを設定します詳細表示 - >プロパティの適切な配列のオプション

これはかなり混乱しているようです。 詳細表示私ののアプリケーション?より明確なデザインパターンがありますか?私は、これらすべてのクラス間の密接な結合があることを認識していますが、それが避けることはできません。

答えて

1

すべてのアプリプロパティにアクセスするためのシングルトンクラスを作成しないでください(PropertiesContainerとしましょう)。このクラスは必要な辞書を保持し、[PropertiesContainer sharedInstance]によってアクセスされます。

このように、あなたが言ったすべてのクラスはプロパティにアクセスするためにそれぞれに結合する必要はありません。これで、必要な場所に簡単にアクセスできるクラスを作成できます。

+0

ありがとうございます。私は 'sharedInstance'を使ったことは一度もありません。それは私が今働いているbizzaroの方法よりも概念的に+保守的であるように聞こえます。 –

+0

ここをクリックしてください:http://iphone.galloway.me.uk/iphone-sdktutorials/singleton-classes/ – giorashc

+0

素晴らしい作品に見えます!もう一度ありがとう –

1

MVCパターンを使用すると、プロパティツリー全体を保持するモデルオブジェクトを作成し、それを使用して適切なサブツリーを各ビューまたはエディタと通信することができます。

モデルオブジェクトは、必ずしもシングルトンとして作成する必要はなく、ちょうど1つ(または必要な数だけ)を作成して保持するだけです。

+0

しかし、私は** RootViewが**それを送信する必要がある** PropertyTableView B **にそれを渡す必要がある(またはそれ自体を参照するか、またはデリゲートとしてそれ自身を設定する)同じ状況になるでしょう。 ** PropertyDetailView C **にはCがその特定のプロパティの利用可能なオプションのリストにアクセスできるようになりました。私があなたが意味することを誤解しない限り、それは 'self.delegate.delegate.dictionaryOfOptions'に私を戻します。 –

+0

モデルの外でプロパティデータベースをフィルタリングする必要がない場合は、その1つのModelオブジェクトをすべてのデータソースデリゲートにします。 – hotpaw2