设计模式之单例模式

简述

单例模式是应用最广的模式之一,在应用这个模式时,单例对象的类必须保证只有一个实例存在。许多时候整个系统只需要拥有一个全局对象,这样有利于我们协调系统整体的行为。

定义

确保一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。

使用场景

确保某个类有且只有一个对象的场景,避免产生多个对象消耗过多的资源,或者某种类型的对象只应该有且只有一个。例如,创建一个对象需要消耗的资源过多,如要访问IO和数据库等资源,这时就要考虑使用单例模式。

实现方式

懒汉模式

懒汉模式是声明一个静态对象,并且在用户第一次调用getInstance时进行初始化,其实现如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
public class Singleton {
private static Singleton instance;
private Singleton() {
}
public static synchronized Singleton getInstance() {
if (null == instance) {
instance = new Singleton();
}
return instance;
}
}

优点:只有在使用时才会被实例化,在一定程度上节约了资源;
缺点:第一次加载时需要及时进行实例化,反应稍慢,最大的问题是每次调用getInstance都进行同步,造成不必要的同步开销。
这种模式一般不建议使用

参考

  1. 《Android源码设计模式-解析与实战》
坚持原创技术分享,您的支持将鼓励我继续创作!