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

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

这似乎是一个愚蠢的问题,但是当我在一家知名公司接受采访时被问到这个问题时,这一直困扰着我。

最佳答案

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

撇开有关使用Singleton的任何政治讨论,从理论上讲,您可以决定使任何Model,View或Controller类都成为Singleton。

正如gnasher所指出的那样,在iOS SDK中,ViewController是由运行时创建和销毁的,这意味着,无论理论如何,在这种情况下将它们作为Singleton都是不合逻辑的。

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

我想知道这就是您的面试官的意思吗?您最想在iOS应用中使用Singleton吗?在这种情况下,正确答案将在模型中。

关于ios - MVC架构中的iOS Singleton类,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37432973/

10-11 07:52