Mat*_*ing 8 singleton objective-c naming-conventions
在一些项目的过程中,我编写了大量的类工厂方法来访问类的Singleton实例.我总是在+ (id)sharedSomething;命名约定上使用一些变体.
另一方面,Apple有各种命名惯例.例如:
// NSNotificationCenter
+ (id)defaultCenter;
// NSUserDefaults
+ (NSUserDefaults *)standardUserDefaults;
// UIApplication
+ (UIApplication *)sharedApplication;
Run Code Online (Sandbox Code Playgroud)
在命名我自己的方法时,我应该注意那些名词中的形容词之前是否有任何押韵或理由?我原本以为它可能与"灵活"与"严格"单例设计有关,但NSFileManager和NSNotificationCenter都遵循+(id)defaultSomething约定,但NSFileManager支持其他实例的分配,而NSNotificationCenter则不支持.我很难过.
编辑:我认为NSNotificationCenter不支持新中心的实例化是错误的.它并不是非常普遍,所以最初的假设不一定是无效的.
一般来说,这些shared…方法适用于真正的单例(NSApplication,NSWorkspace等),而default…或者standard…表示可以有用地实例化的类,但是大多数客户只会使用单个全局实例而感到高兴.但是没有任何公开的书面标准,而且似乎主要是在撰写此类课程时做出的决定.