过程
1.编写类的构造方法
2.创建一个成员变量用来在创建类对象判断是否已经有实例,所以用类类型的变量做对应的成员变量
3.创建一个静态方法来调用构造方法(如果不创建的话,那得直接做new操作,而判断是否有实例肯定不能写在new方法里。否则会造成不断地递归调用,所以要在一个方法里做一个直接的判断是否有实例,所以要使用一个类的静态方法)
代码
package com.atguigu.singleton;
public class SingletonDemo {
//和类类型相同的成员变量,用来在构造对象时判断是否已经有实例对象了
private static SingletonDemo singletonDemo = null;
//SingletomDemo的构造方法
private SingletonDemo(){
System.out.println(Thread.currentThread().getName()+"\t 我是构造方法");
}
public static SingletonDemo getInstance(){
//判断此类是否有实例,有直接返回实例对象,没有则创建实例对象
if (singletonDemo== null) {
singletonDemo = new SingletonDemo();
}
return singletonDemo;
}
public static void main(String[] args) {
//引用类型比较内存地址
System.out.println(SingletonDemo.getInstance() == SingletonDemo.getInstance());
System.out.println(SingletonDemo.getInstance() == SingletonDemo.getInstance());
}
}
运行结果