4

我已经看到许多对“单例”的引用,并且已经看到它们用于“实用”功能,例如常见的验证、转换等。假设不需要引用“自我”,那么使用单例有什么好处,而不是用类方法和可选的静态变量简单地实现实用程序类?风格?表现?并发?

换句话说,不是通过 MySingleton 实例调用 foo :

BOOL b = [[MySingleton sharedInstance] foo:xyz];

可以通过 MyUtility 的类方法调用 foo:

BOOL b = [[MyUtility class] foo:xyz];

任何一个类的实现都是隐含的,如果可以的话,我将放弃列出它们。

4

1 回答 1

0

除了假设没有引用 self之外,没有其他优点。我所说的“你”并不是指你的实现MyUtility,我指的是那些调用的类MyUtility——换句话说,你最终将实现的知识MyUtility投入到其他类中,这与通常的面向对象原则相反。

也就是说,同样的论点反过来说。如果您假设有一个实例,则MyUtility需要充当实例。如果您调用类方法,那么它可以在内部将它们传递给单例实例。

然而,因为实例是常态而不是例外,所以从风格上讲,期望与实例交谈的可能性较小。

于 2012-10-15T20:12:23.570 回答