13.3.1单例模式
单例模式保证一个类仅有一个实例,并提供一个访问它的全局访问点。适用于某个类只有一个对象,以避免产生多个对象消耗过多资源,及只应该有一个对象的场景。
如加载图片的ImageLoad对象、线程池对象、缓存对象、网络请求对象、数据库对象、文件对象、登录状态对象、日志对象,及一些公共数据对象,都可以用单例模式实现,这样也减少了静态和全局变量的使用。
APP向服务器端发请求的时候,有的页面会发送多个请求给服务器,这时如果网络或服务器端出错,会接连弹出多个提示框;这种提示框也可以使用单列模式创建,这样即使发送了多个请求,但只显示一个出错提示框,改善用户体验。
实现单例模式的方式有饿汉、懒汉和DCL方式,如考虑到多线程的情况,这些方式都有不足之处,在《Java并发编事程件》中,推荐以下方式实现:
public class Singleton {
private Singleton() {}
public static Singleton getInstance() {
return SingletonHolder.sInstance;
}
private static class SingletonHolder {