代码设计问题:基于文档的应用程序中的“文档级类”

时间:2011-04-10 01:10:14

标签: objective-c cocoa

在基于文档的应用程序中,“文档级”类的实例如何“了解”它们对应的文档?这是一个被迫在类之间引入耦合的情况吗?他们说耦合是坏的或应该最小化。你对此有何看法?

更多一点澄清:例如,在核心数据应用程序中,每个文档都对应一个MOC。假设我想拥有一个拥有MOC的特殊MocController。现在,重复一个问题:这个类的实例怎么能“知道”它对应哪个文档?我是否被迫在其中放入一个指向控制文档的NSWindowController(或一些DocumentController)实例的ivar?或者是否存在一些更好的方法来避免这些“文档级”类之间的这种耦合?

2 个答案:

答案 0 :(得分:1)

这听起来像是dependency injection的主要案例:当您创建其中一个文档级对象时,请将其提交给它需要了解的文档(或其他)。

答案 1 :(得分:0)

我开始倾向于在这种情况下,所有“文档级”对象和“文档根”对象之间的耦合可能不会太糟糕。在某种程度上,它实际上感觉像一个非常自然的耦合。像依赖注入这样的东西很可能是过度杀伤。

使用上面的例子,WindowController(“文档根”对象和文档的NIB的所有者)应该提供MocController(和其他“文档级”对象,实例化的所有方法)似乎很自然在NIB中的需求,而后者应该包含前者的出口。

这就是我现在要做的事情。但我还是会等待一两天,以防有关此问题的更多想法应该到达现场。