我已经看过许多对" Singleton"并且已经看到它们用于"实用程序"常见的验证,转换等功能。假设没有必要引用" self",使用单例是否有任何优势,而不是简单地用类方法实现实用程序类,可选的静态变量?样式?性能?并发?
换句话说,不是通过MySingleton实例调用foo:
BOOL b = [[MySingleton sharedInstance] foo:xyz];
可以通过MyUtility的类方法调用foo:
BOOL b = [[MyUtility class] foo:xyz];
隐含任何一个类的实现,如果可以,我将放弃列出它们。
答案 0 :(得分:0)
除了你没有引用自我之外没有任何其他优点。而且,“你”我并不是指你MyUtility
的实现,我的意思是那些称为MyUtility
的类 - 换句话说,你最终会将MyUtility
的实施知识投入其他类,与通常的面向对象原则相反。
那就是说,同样的论点是另一种方式。如果您认为存在实例,则需要MyUtility
作为实例。如果你调用类方法,那么它可以在内部将它们传递给单例实例。
然而,因为实例是常态而不是例外,所以在风格上假定与实例交谈的推断较少。