MVC架构内的iOS Singleton类

时间:2016-05-25 09:28:54

标签: ios xcode design-patterns model-view-controller singleton

大多数iOS应用程序都基于MVC设计模式,我们多年来一直在我们的应用程序中使用Singleton类。我知道Singleton本身就是一种设计模式,很多人都认为它是反模式的,所有这些都是关于单身人士的好东西。

但是,如果您将MVC视为应用程序开发的整体架构,我想了解单例在哪里被分类。它是模型,视图还是控制器?如果是这样的话?如果它不属于这三者中的任何一个那么它是什么?

这可能看起来是一个愚蠢的问题,但它一直困扰着我,因为我在一家知名公司的采访中被问到这个问题。

1 个答案:

答案 0 :(得分:2)

MVC是一种架构模式,而Singleton是一种设计模式。这两件事没有关系,因此Singleton在MVC中不是“任何东西”。

除了关于单身人士使用的任何政治讨论外,理论上你可以决定让任何模型,视图或控制器类成为单身人士。

正如gnasher所指出的,在iOS SDK中,ViewControllers是由运行时创建和销毁的,这意味着无论理论如何,在这种情况下成为单身人士都是不合逻辑的。

更可能的情况是您希望模型可用于多个视图。您可能决定使该模型成为可以通过依赖注入框架或构造函数注入访问的单例。在这种情况下,您的类既是Model类,又是Singleton。它们不是相互排斥的。

我想知道这是你的采访者的意思 - 你最有可能想在iOS应用中使用Singleton?在这种情况下,正确的答案将在模型中。