我的代表的代表是......(设计模式)

时间:2012-03-25 14:25:57

标签: objective-c ios

我正在掌握iOS并使用不同的框架。我的项目变得越来越复杂(当然),我想我正在以复杂的方式做一些事情。

我想知道是否有更简单的设计模式来处理这种情况:

应用,数组中包含大量属性;还包含NSDictionaries的NSDictionary,表示每个属性的选项。

属性编辑器:显示显示当前属性的表格,其中包含详细视图的编辑选项

详细信息视图显示包含特定属性的所有选项的表

我现在通过以下方式工作:

App - > 将自己设置为 Property Editor 的委托,后者访问委托(App)的当前属性和属性选项数组

属性编辑器 - > 将自身设置为每个详细信息视图的委托,并在详细信息视图上设置属性,表示来自委托的适当属性选项数组

明细视图 - > 适当的属性选项数组

这看起来很复杂。将详细信息视图委派给我的应用会更好吗?是否有更清晰的设计模式?我意识到所有这些类之间存在紧密耦合,但我不明白这是如何可以避免的。

2 个答案:

答案 0 :(得分:1)

为什么不创建一个单例类来访问所有应用程序属性(让我们称之为PropertiesContainer)。该课程将包含必要的词典,并由[PropertiesContainer sharedInstance]访问。

这样,您提到的所有类都不需要与每个类耦合来访问属性。现在您将拥有一个可以在任何需要的地方轻松访问的课程。 (并且不需要知道谁使用它)

答案 1 :(得分:1)

使用MVC模式,您可以创建一个模型对象来保存整个属性树,并使用它来与每个视图或编辑器通信正确的子树。

Model对象不一定需要创建为单例,只需让App创建并保留一个(或根据需要保留多个)。