美文网首页
单例设计模式

单例设计模式

作者: Jonath | 来源:发表于2016-11-10 21:23 被阅读0次

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

    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;

    }

    }

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

    相关文章

      网友评论

          本文标题:单例设计模式

          本文链接:https://www.haomeiwen.com/subject/lejnsttx.html