在我的程序中,我应该在几种模式下初始化我的类而不创建新实例。 可能吗?也许与单身人士?我希望只有一个实例,并且多次调用init方法。有人能告诉我这是否可能?像这样:
[[MyObject sharedObject] initWithMode:mode1];
以后:
[[MyObject sharedObject] initWithMode:mode2];
答案 0 :(得分:1)
Singleton不会在这里帮助你,因为它是一个共享实例。如果ObjectA在模式1中进入,然后ObjectB将无法在模式2中初始化它。即使ObjectB可以,它也会改变ObjectA期望使用Singleton的上下文,这将导致意外行为。
有几种方法可以解决这个问题,但是如果不知道你想要完成的更多内容,那么我会建议每种模式的子类作为类的不同实例。