大多数iOS应用程序都是基于MVC设计模式的,我们在应用程序中使用单例类已经有很多年了。我知道Singleton本身是一种设计模式,许多人认为它是反模式的,以及关于Singleton的所有好的坏东西。
但是,如果您将MVC作为应用程序开发的整体架构,我想了解单例在其中的分类。它是模型、视图还是控制器?如果是这样,为什么?如果它不属于这三个中的任何一个,那么它是什么?
这看起来可能是一个愚蠢的问题,但它一直困扰着我,因为我在一家知名公司的面试中被问到了这个问题。
发布于 2016-05-25 17:38:33
MVC是一个架构模式,而Singleton是一个设计模式。这两件事是不相关的,因此Singleton在MVC中不是“任何东西”。
抛开任何关于使用单例的政治讨论,理论上你可以决定让任何模型、视图或控制器类成为单例。
正如gnasher所指出的,在iOS软件开发工具包中,ViewControllers是由运行时创建和销毁的,这意味着无论理论如何,在那个上下文中它们都是单例是不合逻辑的。
一种更可能的情况是,您希望您的模型可用于多个视图。您可能决定使该模型成为可通过依赖注入框架或构造器注入访问的Singleton。在这种情况下,您的类既是Model类,又是Singleton类。它们并不是相互排斥的。
我想知道这是不是你的面试官的意思--你最有可能想在iOS应用程序中使用单例?在这种情况下,正确的答案应该在模型中。
https://stackoverflow.com/questions/37432973
复制相似问题