支持/反对使用Singleton Services + Notifications而不是嵌套控制器的参数?

时间:2014-02-23 02:32:12

标签: objective-c cocoa-touch cocoa

我一直在努力使用推荐的MVC方法来构建更大的应用程序,大多数苹果文档和各种教程似乎都采用这种方法。也就是说,嵌套的控制器每个都拥有自己的视图,而我“得到它”,我不一定喜欢它 - 在我的特定应用程序中,我有一个视图(和控制器)层次结构,现在几个类深。例如,主控制器/视图 - >侧边栏 - >侧边栏的上半部分(NSView中的NSSplitView) - > NSTableView的。

我一直在玩我需要在这个层次结构中上下传递的数据/对象,但是它变得有点混乱,似乎正在引导我走上一条我不太喜欢的紧密耦合的道路,通过很多每个控制器的init方法中的东西 - 例如数据模型。

我也玩了一个朋友建议的想法,一个单身人士服务。从本质上讲,它是我的控制器可能需要的任何数据模型或“东西”的包装器,在我的例子中是一个表示NSArray属性并发出通知的EKEventStore(在主线程上)。到目前为止,这种方法似乎正在引导我走上更清晰的代码,并且肯定会使单元测试变得更容易(我认为),但我想知道我的方法是否已经过时了。

有没有人在使用大型应用之前采用这种方法?我是否会偶然发现任何陷阱或地雷?我意识到这很多是风格/偏好,但我很好奇我是不是走错了路。

1 个答案:

答案 0 :(得分:0)

您的单身人士是否只持有要使用的对象集合,还是它还拥有可变的全局状态?对于对象实例化和简单测试,您应该查看像Objection这样的DI实现。对于测试模拟,请查看OCMock

使用Objection,您可以将DataModelService注入任何需要访问数据模型的控制器中。