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;
}

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

你可能感兴趣的:(Android设计模式之单例模式的实现方式及说明)