因此,我的客户 iPhone 应用程序在过去几周内已从 5 个左右的课程增加到超过 25 个课程。对于如此大的(无论如何对于 iPhone 来说)类结构,我一直在利用 Singleton 类来访问全局变量。问题是,每当我需要访问我正在处理的类之外的变量时,我可以选择修改代码以传递对变量的引用,或者只是将其放入单例中。当然,将其放入单例中可以减少很多代码和工作量,但是,现在单例开始看起来像是不相关的全局变量的大杂烩。
我的问题是,维护一个具有不相关的全局变量的大型单例对象有多合适,以及在“不平凡的”iPhone应用程序中跨类共享数据的“最佳实践”方式通常是什么?
非常感谢您的建议!
我做了一个详细分析 http://jorudolph.wordpress.com/2009/11/22/singleton-considerations/在解耦设计的背景下解决这个问题。我将尝试总结我的观点:
- 如果您的 Singleton 具有重要的全局状态,请不要使用 Singleton。这包括持久存储,例如数据库、文件等。
- 如果类名称对单例对象的依赖关系不明显,则应注入依赖关系。将 Singleton 实例注入类的需要证明了该模式的错误用法(参见第 1 点)。
- 假设单例的生命周期与应用程序的生命周期相同。大多数单例实现都使用延迟加载机制来实例化自身。这是微不足道的,它们的生命周期不太可能改变,否则你不应该使用 Singleton。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)