在我的应用程序中,我使用了一个类(目前是单例),例如 ClassA,用于管理内容。
因为它是单例,所以我使用这种行为在许多需要它的类中获得了这个独特的实例。
但是现在,我不能再将这个类保持为单例,我需要一个 NSDocument 实例。
所以我在我的 NSDocument 子类上创建了一个 ClassA 的实例,但问题是将这个对象传递给需要它的类。
我有这种结构:
Class1 <- Class2 <- Class3 <- 文档 -> ClassA
我需要访问 Class1 中 Document 的 ClassA 实例。
我可以使用依赖注入(inject)通过 init 或 setter 方法在 Class1 中传递 ClassA,但是因为 Document 不能直接访问 Class1,所以我需要将它传递给 Class3,然后传递给 Class2,然后传递给 Class1。
这是唯一的方法吗?还是有其他更好的方法来处理它?</p>
最佳答案
我会说回到你的单例原则,但使用 NSDocument
作为 ClassA
对象字典的键;像这样的东西:
static NSMutableDictionary *_classCache = [[NSMutableDictionary alloc] init];
+ (ClassA *)classAForDocument:(NSDocument *)document
{
ClassA *classA = [_classCache objectForKey:document];
if (classA == nil)
{
// Initialise with something specific to the document I guess...
classA = [[ClassA alloc] init];
[_classCache setObject:classA forKey:document];
}
return classA;
}
这只需要 Class{1,2,3}
知道它们所属的文档。
关于objective-c - 在尽可能少的耦合下在许多类之间传递一个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11742461/