NSString プロパティcontactInfoEntityTypeと、 contactInfoEntityTypeに基づいて任意の数のプロパティを格納するコンテナ オブジェクトpropertiesを持つContactInfoEntityという名前のオブジェクトを設計しています。
目標は、実行時にユーザーが新しいContactInfoEntityTypeを定義できるようにすることです。
現在、ContactInfoEntityType で NSMutableDictionary を使用しています。これには、値:@"Generic" のキー:@"typeName" があります。
新しい ContactInfoEntityType を定義するには、キー @"typeName" の値を変更し、新しいキー @"newPropertyName1"、@"newPropertyName2"、... を値として NSDicts で追加します。ネストされた辞書のキーは、@"defaultValue"、@"index"、@"formatToken"、... のようなものです。
が[ContactInfoEntityFactory contactInfoEntityOfType:emailInfoEntityType];
送信されると、ファクトリは @"emailInfoEntityType" を @"typeName" キーの値として持つ NSMutableDictionary を取得し、@"domain"、@"localPart"、および @"emailNickname" の 3 つの追加の辞書エントリがあることを確認します。
次に、contactInfoEntityTypeが @"emailInfoEntityType" であり、プロパティコンテナーが関連付けられた defaultValues を持つ 3 つのエントリを持つ ContactInfoEntity を作成します。
現在、私のプロパティコンテナは NSArray と NSMutableArray です。NSArray は newPropertyNames を保持し、NSMutableArray は値を保持します - 両方とも同じインデックスにあります。NSArray はエンティティ型定義の一部の情報を複製しますが、定義が消去された場合に備えて、個々のエンティティのデータを意味のあるものに保つと思います。
これは、この問題に対する合理的なアプローチですか? これは私がこれまでに試みた中で最も抽象的なオブジェクトであり、まだすべての一般的な設計パターンに頭を悩ませていません。
具体的には、型定義用の NSMutableDictionary やプロパティオブジェクト用の NSArray/MutableArray よりも適切なクラスはありますか?
私が質問をした方法についての意見もお待ちしています。