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

单例模式
概念,在核心结构中包含一个单例的特殊类,或者是说一个类只能被实例化一次
特点 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;
}

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

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容