在基于文档的可可应用程序中,谁负责?



根据基于文档的应用程序指南,应该有一个DocumentController,一个Document和一个WindowController。我遇到的困难是如何判断一个给定的责任应该落在哪里。

My Document表示一个待办事项列表。给定的待办事项列表由我的文档读入内存,并由WindowController显示。任何时候窗口中可容纳的待办事项的数量是由窗口的大小决定的,所以当我需要显示待办事项时,我的WindowController要求我的Document提供足够的待办事项来填充可见列表。

如果我愿意,我可以使用正则表达式搜索我的待办事项(我知道,想象的对),并且匹配作为顶部结果返回。在这种情况下,我不太清楚责任在哪里。Document处理保存和加载待办事项列表,但上面我要求它也处理将列表的一小部分返回给WindowController。那么匹配的逻辑应该放在文档中吗?或者应该留在WindowController,因为它与保存和加载数据无关(搜索后的待办事项顺序从未保存到磁盘)?这些都是我经常问自己的问题。当我回顾像这样的一个项目时,我注意到我的判断似乎彼此不一致。有时我要花一个小时在两者之间移动一点逻辑……试着想象哪种设计更有意义。

显然我需要帮助。

我的例子是一个非常特殊的情况,但我对特解不感兴趣。我感兴趣的是更一般地了解这三个类的职责应该是什么。我读了指南,也在谷歌上搜索了一下,但我似乎还是搞不懂。

这个问题很有帮助,但我还是不明白。

谢谢!

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

NSWindowController更适合管理UI的细节(一个"UI控制器"),本质上你只是用你的搜索栏控制模型的视图。

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

最新更新