美文网首页
Android设计模式之单例模式的实现方式及说明

Android设计模式之单例模式的实现方式及说明

作者: 雨田Android开发 | 来源:发表于2019-07-22 11:01 被阅读0次

    单例模式
    概念,在核心结构中包含一个单例的特殊类,或者是说一个类只能被实例化一次
    特点 1 只能有一个实例 。 2 必须自己创建自己的实例. 3单例类必须给其他对象提供这一实例
    方式 1 饿汉 类加载时就完成了初始化 除非系统重启这个对象是不会改变的,线程安全
    2 懒汉 类加载时不会初始化 在使用的时候才进行初始化
    3 静态内部类的方式实现
    饿汉式
    饿汉式主要有两种种实现方式
    第一种就是静态变量式初始化 静态方法获取

    private static Singleton singleton = new Singleton();
    public static Singleton getInstance(){
        return singleton;
    }
    

    第二种是静态代码块的方式来实现

    private static Singleton singleton;
     static {
         //静态代码块的方式实现
         singleton = new Singleton();
     }
    public static Singleton getInstance(){
         return singleton;
     }
    

    以上两种实现方式均为饿汉式,在类加载式就完成了初始化工作,本身就是线程安全的
    懒汉式
    懒汉式是在用到时候才会初始化,在多线程中并不是线程安全,可能会被创建多个实例,这与单例的宗旨目的相违背,所以为了达到线程安全的目的采用synchronized同步锁的方式来达到线程安全的目的

    private static Singleton singleton = null;
    public static Singleton getInstacn(){
        if(singleton==null){
            synchronized (Singleton.class){
                if(singleton==null){ //双重判空是为了 判断是否有线程已经执行过
                    singleton = new Singleton();
                }
            }
        }
        return singleton;
    }
    

    静态内部类的式

    //静态内部类 在主动使用的时候才会加载
    private static class InnerSingleton{
        static Singleton singleton = new Singleton();
    }
    
    public static Singleton getInstance(){
        return  InnerSingleton.singleton;
    }
    

    以上就是单例的主要实现方式,具体是用哪种根据业务情况自己判断。

    相关文章

      网友评论

          本文标题:Android设计模式之单例模式的实现方式及说明

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