单例模式基础版

单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一
应用场合: 有些对象只需有一个的场景, 例如, 访问文件
作用: 保证整个应用程序中某个实例有且只有一个
类型:分为饿汉模式懒汉模式

这是我们平时经常使用的class类

public class Singleon{
}

在使用这个class类的时候, 通常直接new

public class startActivity{
//通过默认的构造参数,我们可以创建多个实例
  new Singleon();
  new Singleon();
}

现在我们需要实现只创建一个实例

饿汉模式

为了安全,控制访问,static前的修饰符还是需要写私有的
如下就是我们一个最简单的饿汉模式的写法
为什么叫饿汉模式呢?
这就和这行代码的加载顺序有关了private static Singleton instace=new Singleton();
static静态成员属于类所有,当类加载时,就会去创建一个Singleton的实例, 不管用户是否去调用获取,该实例都已经加载
因为该实例迫不及待的就加载出来了, 所以称之为饿汉模式(早早的吃饱饱)

public class Singleton{
  //1.修改默认的构造方法,不允许外部直接创建对象
   private Singleton(){
   }
    //2.创建类的唯一实例
    private  static Singleton instace=new Singleton();

   //3.提供一个用于获取实例的方法
    public Singleton getInstace(){
         return instance;
   }
}

懒汉模式

不推荐如下写法,懒汉模式线程不安全,解决办法,看文章双重锁
https://www.jianshu.com/p/5636d9123e65

public class Singleton{
  //1.修改默认的构造方法,不允许外部直接创建对象
   private Singleton(){
   }
    //2.声明类的唯一实例,使用private static修饰
    private  static Singleton instance;

   //3.提供一个用于获取实例的方法
    public Singleton getInstace(){
     //当外部类调用的时候再创建该实例
       if(null==instance){
           instance=new Singleton();
      }
     return instance;
   }
}

饿汉模式,懒汉模式区别

名称 区别 是否线程安全
饿汉模式 加载类时比较慢,运行时获取对象的速度比较快 线程安全
懒汉模式 加载类时比较快,运行时获取对象的速度比较慢 线程不安全

你可能感兴趣的:(单例模式基础版)