一、单例模式的概念
单例模式是指整个应用生命中期内只有一个实例。单例模式是一种广泛使用的设计模式,能够避免对象的重复创建,减少内存开销。
二、单例模式与静态类的区别
三、如何实现单例模式
1、饿汉模式
public class ImageLoader {
public static ImageLoader mInstance = new ImageLoader();
private ImageLoader() {
}
public static ImageLoader getInstance() {
return mInstance;
}
}
2、懒汉模式
public class ImageLoader {
public static ImageLoader mInstance;
private ImageLoader() {
}
public static ImageLoader getInstance() {
if (mInstance == null) {
mInstance = new ImageLoader();
}
return mInstance;
}
}
public class ImageLoader {
public static ImageLoader mInstance;
private ImageLoader() {
}
public static synchronized ImageLoader getInstance() {
if (mInstance == null) {
mInstance = new ImageLoader();
}
return mInstance;
}
}
public class ImageLoader {
public static ImageLoader mInstance;
private ImageLoader() {
}
public static ImageLoader getInstance() {
synchronized(ImageLoader.class) {
if (mInstance == null) {
mInstance = new ImageLoader();
}
}
return mInstance;
}
}
public class ImageLoader {
public static ImageLoader mInstance;
private ImageLoader() {
}
public static ImageLoader getInstance() {
if (mInstance == null) {
synchronized(ImageLoader.class) {
mInstance = new ImageLoader();
}
}
return mInstance;
}
}
public class ImageLoader {
public static ImageLoader mInstance;
private ImageLoader() {
}
public static ImageLoader getInstance() {
if (mInstance == null) {
synchronized(ImageLoader.class) {
if (mInstance == null) {
mInstance = new ImageLoader();
}
}
}
return mInstance;
}
}
3、静态内部类
public class ImageLoader {
private ImageLoader() {
}
public static ImageLoader getInstance() {
return ImageLoaderInner.mInstance;
}
private static class ImageLoaderInner {
private static ImageLoader mInstance = new ImageLoader();
}
}
参考文章:
1、Java实现单例的5种方式