单例设计模式

2016-11-10  本文已影响0人  Jonath

单例设计模式:解决的是一个类只能创建一个对象

iOS的单例模式有两种官方写法,如下:

1)不使用GCD的方式

#import"Manager.h"

static Manager *manager = nil;

@implementation Manager

+(Manager*)defaultManager

{

if(!manager)

manager=[[self allocWithZone:NULL] init];

return manager;

}

@end

2)使用GCD的方式

#import"Manager.h"

@implementation Manager

+(Manager *)sharedManager

{

staticdispatch_once_t predicate;

staticManager *sharedManager;

dispatch_once(&predicate, ^{

sharedManager=[[Manager alloc] init];

});

return sharedManager;

}

@end

Java单利设计模式

1.懒汉式

public class Singleton {

private static class LazyHolder {

private static final Singleton INSTANCE = new Singleton();

}

private Singleton (){}

public static final Singleton getInstance() {

return LazyHolder.INSTANCE;

}

}既实现了线程安全,又避免了同步带来的性能影响

2:饿汉式

public classSingleton1 {

private Singleton1() {}

private static final Singleton1 single = new Singleton1();

//静态工厂方法

public static Singleton1 getInstance() {

return single;

}

}

饿汉式在类创建的同时就已经创建好一个静态的对象供系统使用,以后不再改变,所以天生是线程安全的。

上一篇下一篇

猜你喜欢

热点阅读