文章目录
基本知识
单例模式:保证一个类仅有一个实例,并提供一个访问它的全局访问点。
本质:控制实例的数目。 读取配置文件是典型的单例模式。打印机也是单例模式。
特点: 1、只有一个实例。2、必须创建自己的唯一实例。3、必须共享实例(static),给其他对象提供这一实例。
通常我们可以让一个全局变量使得一个对象被访问,但它不能防止实例化多个对象。最好的办法就是让类自身负责保存它的唯一实例。这个类可以保证没有其他实例可以被创建,并且它可以提供一个访问该实例的方法。
一般有饿汉式单例(空间换时间)和懒汉式单例(时间换空间),一般用懒汉式单例即可。
基本结构:
package 基本结构;
public class Singleton {
// 私有静态
private static Singleton instance;
// 构造方法让其private,不让外界利用new创建此类实例的可能
private Singleton() {
}
// 此方法是获得本类实例的唯一全局访问点
public static Singleton GetInstance() {
// 若实例不存在,则new一个新实例,否则返回已有的实例
if (instance == null) {
instance = new Singleton();
}
return instance;
}
}
输出结果为两个实例相同
package 基本结构;
public class client {
public static void main(String[] args) {
Singleton s1 = Singleton.GetInstance();
Singleton s2 = Singleton.GetInstance();
if (s1 == s2) {
System.out.println("两个对象相同!");
}
}
}