因此,过去几周,我的客户iphone应用程序已从5个左右的 class 增加到25个以上的 class 。有了这么大的类结构(无论如何对于iphone而言),我一直在利用Singleton类来访问全局变量。问题是,每当我需要访问正在处理的类之外的变量时,我都可以选择修改代码以将对变量的引用传递给变量,或者仅将其扔到单例中。当然,将其扔到单例中可以节省很多代码和精力,但是现在,单例看起来像是一群无关的全局变量。

我的问题是,用不相关的全局变量维护大型单例对象是否合适?在“非平凡的” iphone应用程序中,跨类共享数据的“最佳实践”通常是什么?

预先非常感谢您的建议!

最佳答案

我已经在分离设计的背景下对此问题做了一个detailed analysis。我将尝试总结我的观点:

  • 如果您的Singleton具有重要的全局状态,请不要使用Singleton。这包括持久性存储,例如数据库,文件等。
  • 在类名称对单例对象的依赖性不明显的情况下,应注入(inject)依赖性。将Singleton实例注入(inject)类的需求证明了该模式的错误用法(请参见第1点)。
  • Singleton的生命周期被假定为与应用程序的生命周期相同。大多数Singleton实现都使用延迟加载机制实例化自己。这是微不足道的,它们的生命周期不太可能改变,否则您不应该使用Singleton。
  • 07-28 01:10
    查看更多