单身人士的后果

时间:2011-05-11 20:44:55

标签: iphone singleton application-singleton

所以我只是深入研究了Singleton类,是的,我发现它们非常有用。我使用我的单身主要用于多个目标(视图,表格等)的数据存储。话虽这么说,我已经可以看到自己要在我的项目中实现很多单身人士。

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

因此,将其缩小为一个问题:拥有大量单身人士是否有害?

2 个答案:

答案 0 :(得分:1)

单身人士不会扩展。无论你认为什么应该是一个单身,当你的系统变大时,你需要不止一个。

如果你不需要一个以上,单身就可以了。但是,随着系统规模的扩大,您通常需要在其自己的上下文中使用多个任何

单身人士只是说“全球化”的另一种方式。它并不坏,但总的来说,对于不断发展和复杂增长的系统来说,这不是一个好主意。

答案 1 :(得分:1)

来自GOF书:

  

Singleton模式有几个好处:

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

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

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

  6.   
  7. 允许可变数量的实例。该模式可以轻松改变主意,并允许单个实例的多个实例   类。此外,您可以使用相同的方法来控制数量   应用程序使用的实例。只有授予的操作   对Singleton实例的访问需要改变。

  8.   
  9. 比课堂操作更灵活。打包单例的功能的另一种方法是使用Singleton类   子类。类操作(即C ++中的静态成员函数)   或Smalltalk中的类方法)。但这两种语言技巧   难以更改设计以允许多个实例   ofclass。而且,C ++中的静态成员函数永远不会是虚拟的,   所以子类不能多态地覆盖它们。

  10.