我正在设计一个名为ContactInfoEntity的对象,它有一个 NSString 属性contactInfoEntityType和一个容器对象properties,它根据它的contactInfoEntityType存储任意数量的属性。
目标是让用户能够在运行时定义新的ContactInfoEntityType 。
现在我在 ContactInfoEntityType 中使用 NSMutableDictionary,它的键:@"typeName" 的值:@"Generic"。
要定义新的 ContactInfoEntityType,我更改键的值:@"typeName" 并添加新键:@"newPropertyName1", @"newPropertyName2",... 以 NSDicts 作为值。嵌套字典的键类似于:@"defaultValue", @"index", @"formatToken", ...
发送时[ContactInfoEntityFactory contactInfoEntityOfType:emailInfoEntityType];
,工厂获取带有@"emailInfoEntityType" 作为其@"typeName" 键值的NSMutableDictionary,并看到有三个附加的字典条目:@"domain"、@"localPart" 和@"emailNickname"。
然后,它创建一个 ContactInfoEntity,其contactInfoEntityType为@"emailInfoEntityType",并且属性容器具有三个具有关联默认值的条目。
现在我的属性容器是一个 NSArray 和一个 NSMutableArray。NSArray 保存 newPropertyNames 而 NSMutableArray 保存值 - 两者都在同一个索引处。NSArray 确实复制了实体类型定义中的一些信息,但我觉得它使各个实体中的数据保持有意义,以防定义被清除。
这是解决这个问题的合理方法吗?这是迄今为止我尝试过的最抽象的对象,但我还没有完全理解所有常见的设计模式。
具体来说,是否有比 NSMutableDictionary 用于类型定义和 NSArray/MutableArray 用于属性对象更合适的类?
对我提出问题的方式的任何输入也表示赞赏。