在我的基于文档的应用程序中,我有一个 AppController 来处理打开 Prefs、About 面板等。我还有一个单例类;因为它基本上是一个被传递的全局对象,谁应该拥有它?使用它的对象还是我的 AppController?我读过的一些文章说你应该有一个“中心”的地方——比如一个代表,其他人说这是糟糕的设计,只有一个使用类 X 的对象应该拥有类 X。你怎么看?
问问题
104 次
3 回答
2
没有什么真正拥有单例,因为它存储在这样的静态变量中:
static Globals *sharedGlobals = nil;
@implementation Globals
+ (Globals *) sharedGlobals {
if (!sharedGlobals) sharedGlobals = [[Globals alloc] init];
return sharedGlobals;
}
第一次sharedGlobals
调用该方法时,单例将由调用它的任何类创建。谁先调用它并不重要。
于 2012-08-30T03:11:52.673 回答
0
我认为单例对象在第一次分配后才存在于内存中,它不应该被任何对象拥有。
于 2012-08-30T02:47:23.360 回答
-1
您不应该使用单例来定义全局对象,单例模式旨在提供一种方法来确保在一个上下文中具有唯一性。但问题是,如果不使用依赖注入框架,通过java实现,实现模式的静态方法让所有应用类可以自由访问单例。因此,这是一种开始破坏您自己的模块/应用程序设计的方法(如果您没有正确控制它)。
在您决定使用或不使用单例模式(反对和赞成)之前先看看这篇文章:
于 2012-08-30T06:44:19.467 回答