Objective c 我的代表的代表是。。。(设计模式)
我掌握了iOS的诀窍,并使用了不同的框架。我的项目变得越来越复杂(当然),我想我正在以一种复杂的方式做一些事情 我想知道是否有一种更简单的设计模式来处理这种情况: 应用程序在一个数组中拥有大量属性;还保存表示每个属性的选项的NSDictionary的NSDictionary 属性编辑器:显示显示当前属性的表格,其中包含详细视图的编辑选项 详细视图:显示包含特定属性所有选项的表格 我已经通过以下方式实现了: App->将自身设置为属性编辑器的委托,属性编辑器访问委托(App)的当前属性和属性选项数组 属性编辑器->将自身设置为每个详细视图的代理,并在详细视图上设置属性,表示代理中的适当属性选项数组 详细视图->适当的属性选项数组Objective c 我的代表的代表是。。。(设计模式),objective-c,ios,Objective C,Ios,我掌握了iOS的诀窍,并使用了不同的框架。我的项目变得越来越复杂(当然),我想我正在以一种复杂的方式做一些事情 我想知道是否有一种更简单的设计模式来处理这种情况: 应用程序在一个数组中拥有大量属性;还保存表示每个属性的选项的NSDictionary的NSDictionary 属性编辑器:显示显示当前属性的表格,其中包含详细视图的编辑选项 详细视图:显示包含特定属性所有选项的表格 我已经通过以下方式实现了: App->将自身设置为属性编辑器的委托,属性编辑器访问委托(App)的当前属性和属性选项数
这似乎很复杂。将详细视图委托给我的应用程序会更好吗?是否有更清晰的设计模式?我意识到所有这些类之间存在着紧密耦合,但我不认为这是可以避免的。为什么不创建一个用于访问所有应用程序属性的单例类(我们称之为
PropertiesContainer
)。此类将包含必要的词典,并可由[PropertiesContainer sharedInstance]
访问
这样,您提到的所有类都不需要与每个类耦合才能访问属性。现在,您将有一个类,可以在任何需要它的地方轻松访问它。(它不需要知道谁使用它)使用MVC模式,您可以创建一个模型对象来保存整个属性树,并使用它与每个视图或编辑器通信适当的子树
模型对象不一定要创建为单个对象,只需让应用程序创建并保留一个(或根据需要保留多个)。谢谢。我从来没有使用过
共享状态
——我必须仔细阅读。听起来它在概念上比我现在使用的bizzaro方式更清晰,更易于维护。但我会处于相同的情况,即RootView A必须将它传递(或将其引用自身或将其设置为委托)给PropertyTableView B,后者必须发送它(或将其自身设置为委托)创建PropertyDetailView C,以便C可以访问该特定属性的可用选项列表。这让我回到了self.delegate.delegate.dictionaryofooptions
——除非我误解了你的意思。如果你不需要在模型之外过滤属性数据库,只需将一个模型对象作为数据源委托即可。