我们甚至可以把这个方法声明为类方法,这样就告诉了代码的阅读者这个方法不会修改任何实例的状态。
"单例就是披着羊皮的全局状态"。一个单例可以被使用在任何地方,而不需要显式地声明依赖。就像变量 _a 和 _b 在 computeSum 内部被使用了,却没有被显式声明一样,程序的任意模块都可以调用 [SPMySingleton sharedInstance] 并且访问这个单例。这意味着任何和这个单例交互产生的副作用都会影响程序其他地方的任意代码。
所以我们使用类方法一般有两种情况:
- 创建一些事物,比如特殊格式的字符串等。
- 作为工具方法,比如返回常数等。
类方法不能使用实例变量,所以导致它只适用于一些特殊的情况。