Iphone 单身人士的后果

Iphone 单身人士的后果,iphone,singleton,application-singleton,Iphone,Singleton,Application Singleton,所以我只是深入研究了Singleton类,是的,我发现它们非常有用。我主要使用我的单例存储多个目标(视图、表等)的数据。也就是说,我已经看到我自己将在我的项目中实现很多单例 但是很多单身人士会有负面影响吗?从我所读到的关于单例的内容来看,在一个进程中为每个单例创建一个实例。其他类实例从内存中被释放(假设它们被正确释放),那么单例也应该被释放吗 所以,把它缩小到一个问题:有很多单身汉有害吗 单身汉无法扩展。无论你认为什么应该是单身,当你的系统变得更大时,结果证明你需要不止一个 如果你从来都不需要超

所以我只是深入研究了Singleton类,是的,我发现它们非常有用。我主要使用我的单例存储多个目标(视图、表等)的数据。也就是说,我已经看到我自己将在我的项目中实现很多单例

但是很多单身人士会有负面影响吗?从我所读到的关于单例的内容来看,在一个进程中为每个单例创建一个实例。其他类实例从内存中被释放(假设它们被正确释放),那么单例也应该被释放吗


所以,把它缩小到一个问题:有很多单身汉有害吗

单身汉无法扩展。无论你认为什么应该是单身,当你的系统变得更大时,结果证明你需要不止一个

如果你从来都不需要超过一个,一个单身汉就可以了。然而,随着系统的扩展,您通常需要在其自身上下文中的不止一项

单身只是“全球”的另一种说法。这并不坏,但一般来说,对于复杂度不断发展和增长的系统来说,这不是一个好主意。

摘自GOF书籍:

单例模式有几个好处:

  • 对唯一实例的受控访问。因为Singleton类封装了它的唯一实例,所以它可以严格控制如何封装 当客户访问它时

  • 减少了名称空间。单例模式是对全局变量的改进。它避免了使用全局变量污染名称空间 存储唯一实例的变量

  • 允许改进操作和表示。Singleton类可以是子类,并且很容易配置应用程序 使用此扩展类的实例。您可以配置 具有运行时所需类实例的应用程序

  • 允许可变数量的实例。这种模式可以很容易地改变你的想法,并允许一个以上的单身实例 班级。此外,您可以使用相同的方法来控制数字 应用程序使用的实例数。只有授权的操作 对Singleton实例的访问需要更改

  • 比类操作更灵活。打包singleton功能的另一种方法是使用singleton类可以 子类。类操作(即C++中的静态成员函数) 或Smalltalk中的类方法)。但这两种语言技巧 使更改设计以允许多个实例变得困难 班级的。此外,C++中的静态成员函数从来不是虚拟的, 所以子类不能以多态方式覆盖它们


  • 嗯,我明白你的意思。让我回答我自己的问题,谢谢你的评论!