利用私有化构造方法的方式实现
//该模式下Single类中直接就实例化了对象如果没有使用则会浪费内存空间
public class Singleton {
public static void main(String args[]) {
Single s1 = null;
s1 = Single.getInstance();
Single s2 = null;
s2 = Single.getInstance();
System.out.println("s1----->"+s1);
System.out.println("s2----->"+s2);
}
}
class Single{
private Single() {}
static Single instance = new Single();
public static Single getInstance() {
return instance;
}
}
//结果
//s1----->DesignPattern.Single@15db9742
//s2----->DesignPattern.Single@15db9742
虽然声明了两个对象但是这两个对象只在Single中声明了一次;s1,s2只是调用了Single中的实例化对象而已没有自己单独实例化对象;
比如windows下回收站就是一个单例的例子 只实例化一个回收站但是在磁盘每个分区中调用了回收站实例化对象,但其实只有一个回收站
//该模式下Single类中先只声明对象主方法中使用时才实例化
public class Singleton {
public static void main(String args[]) {
Single s1 = null;
s1 = Single.getInstance();
Single s2 = null;
s2 = Single.getInstance();
System.out.println("s1----->"+s1);
System.out.println("s2----->"+s2);
}
}
class Single{
private Single() {}
static Single instance;
public static Single getInstance() {
if(instance==null) {
instance = new Single();
}
return instance;
}
}
//结果
//s1----->DesignPattern.Single@15db9742
//s2----->DesignPattern.Single@15db9742