Singleton模式(单例模式)
饿汉式:就是在类被加载时就初始化好了对象
Singleton1 .java
public class Singleton1 {
// 静态成员,保证只保存一个对象
private static Singleton1 singleton1 = new Singleton1();
// 私有化构造器保证该类不能再外部被创建
private Singleton1() {
}
// 提供给外部访问
public static Singleton1 getInstance() {
return singleton1;
}
}
懒汉式:在调用获取实例方法时才初始化,但是存在线程安全问题
Singleton.java
public class Singleton {
private static Singleton singleton;
private String name;
private Singleton(String name) {
this.name = name;
}
// 获取实例时初始化
public static Singleton getInstance(String name) {
if (singleton == null) {
singleton = new Singleton(name);
}
return singleton;
}
public void printName() {
System.out.println(this.name);
}
}
测试:
MainTest.java
public class MainTest {
public static void main(String[] args) {
Singleton instance = Singleton.getInstance("s1");
instance.printName();
Singleton instance2 = Singleton.getInstance("s2");
instance.printName();
System.out.println("相等?" + instance.equals(instance2));
Singleton1 instance3 = Singleton1.getInstance();
Singleton1 instance4 = Singleton1.getInstance();
System.out.println(instance3.equals(instance4));
}
}
测试获取对象是相等的。