应用场景:确保程序运行期某个类,只有一份实例,用于进行资源共享控制。
优势:使用简单,延时求值,易于跨模块
敏捷原则:单一职责原则
实例:[UIApplication sharedApplication]。
注意事项:确保使用者只能通过 getInstance方法才能获得,单例类的唯一实例。
java,C++中使其没有公有构造函数,私有化并覆盖其构造函数。
object c中,重写allocWithZone方法,保证即使用户用 alloc方法直接创建单例类的实例,
返回的也只是此单例类的唯一静态变量。
@interface Singleton : NSObject
+ (Singleton *)sharedSingleton;
@end
//Singleton.m
#import "Singleton.h"
@implementation Singleton
static Singleton *sharedSingleton = nil;
+ (Singleton *)sharedSingleton{
static dispatch_once_t once;
dispatch_once(&once,^{
sharedSingleton = [[self alloc] init];
//dosometing
});
returnsharedSingleton;
}
网友评论