常见的两种单例模式
单例模式:单例模式是常见的一种设计模式,该模式的主要目的是确保某一个类中只有一个实例存在。那么我们就在想为什么要使用单例模式呢?在编程时我们经常会频繁的创建和销毁全局类中的对象。为了避免这种消耗资源,占用内存的现象我们就使用单例模式。
单例模式要点:要保证一个类中只有一个实例。
接下来介绍两种常见的单例模式:懒汉模式和饿汉模式
/*
* 懒汉单例模式
*/
public class SingleTonLazy {
//自定义一个对象,使用final修饰防止被更改
//使用static修饰供static类访问(static修饰的属性或方法可以通过类名.属性获取属性或者类名.方法调用方法)
//使用private修饰让外部类看不见该对象
private static SingleTonLazy singleTonLazy=null;
//私有化构造器
private SingleTonLazy(){
}
//定义一个获取single对象方法,使用static修饰可以供外部通过类名访问
public static SingleTonLazy getSingleTonLazy(){
//之前定义的singleTonLazy是null,首先要判断
if (singleTonLazy==null) {
singleTonLazy=new SingleTonLazy();
}
return singleTonLazy;
}
}
/*
* 饿汉式单例模式
*/
public class SingleTonHungry {
//自定义一个对象,使用final修饰防止被更改,使用final修饰避免single对象被修改
//使用static修饰供static类访问,使用private修饰看不见该对象
private static final SingleTonHungry single=new SingleTonHungry();
//私有化构造函数
private SingleTonHungry(){
}
//定义一个获取single对象方法,使用static修饰可以供外部通过类名访问
public static SingleTonHungry getSingle(){
return single;
}
}
上面介绍了懒汉单例模式和饿汉单例模式,其中饿汉单例模式线程安全(对象使用final修饰,使得该对象不能被修改),懒汉单例模式比较节约内存(因为饿汉单例模式一来就创建一个对象,而懒汉单例模式是在需要使用对象的时候才调用getSingle方法获取)。这两种模式各有优缺点,没有绝对的适合,根据实际情况来使用。