根据Document-Based Applications Guide,应该有一个DocumentController,一个Document和一个WindowController。我遇到的麻烦是学习判断给定的责任应该落在哪里。

我的文档代表一个待办事项清单。给定的待办事项列表由我的文档读入内存,并由WindowController显示。任何时候都可以在窗口中容纳的待办事项数量取决于窗口的大小,因此当我需要显示待办事项时,WindowController会向我的Document询问是否有足够的待办事项来填充可见列表。

如果愿意,我可以使用正则表达式搜索待办事项(我知道,很合适),然后将匹配结果作为顶级结果返回。在这种情况下,我不清楚责任在哪里。该文档涉及保存和加载待办事项列表,但在上面我已经要求它还处理将列表的一小部分返回给WindowController的问题。那么匹配逻辑应该放在文档中吗?还是应该保留在WindowController中,因为它与保存和加载数据无关(搜索之后的待办事项顺序永远不会保存到磁盘)?这些是我发现自己在问的问题。当我回顾这样一个项目时,我注意到我的判断力似乎相互矛盾的地方。有时我会花一个小时在两者之间转移一点逻辑...试图想象哪种设计更有意义。

显然我需要帮助。

我的示例是一个非常特殊的情况,但是我对特定的解决方案不感兴趣。我有兴趣更笼统地了解这三个阶层的职责。我阅读了指南,并在Google上进行了一些搜索,但似乎仍然无法理解。

This问题很有帮助,但我仍然感到困惑。

谢谢!

最佳答案

在这种情况下,我的直觉是将逻辑放入窗口控制器中。搜索功能不会影响实际模型,我认为NSDocument更像是一个“模型控制器”。

NSWindowController更适合管理UI的详细信息(“ UI控制器”),并且基本上,您只是通过搜索栏来控制模型的视图。

是的,我知道我们也有NSViewController,但是有时候,这只是附加的复杂性。在很多时候,NSWindowController都很好。

关于cocoa - 在基于文档的 cocoa 应用程序中,谁来负责?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7168991/

10-09 05:18