实现单例模式饿汉式/懒汉式的几个重要步骤:
①构造器私有化
②类内部创建对象实例
③对外提供一个公有的静态方法,返回实例对象
package design_pattern;
//单例模式
public class singleton {
public static void main(String[] args) {
//饿汉式单例模式--静态常量写法
singleton01 instance = singleton01.getInstance();
singleton01 instance1 = singleton01.getInstance();
System.out.println(instance.hashCode());
System.out.println(instance1.hashCode());
System.out.println();
//饿汉式单例模式--静态代码块写法
singleton02 instance2 = singleton02.getInstance();
singleton02 instance3 = singleton02.getInstance();
System.out.println(instance2.hashCode());
System.out.println(instance3.hashCode());
System.out.println();
//懒汉式单例模式
singleton03 instance4 = singleton03.getInstance();
singleton03 instance5 = singleton03.getInstance();
System.out.println(instance4.hashCode());
System.out.println(instance5.hashCode());
System.out.println();
}
}
//饿汉式单例模式--静态常量写法
class singleton01{
//本部类创建实例对象
private final static singleton01 instance=new singleton01();
//构造器私有化
private singleton01(){}
//对外公开一个方法,返回实例对象
public static singleton01 getInstance() {
return instance;
}
}
//饿汉式单例模式--静态代码块写法
class singleton02{
static {
instance=new singleton02();
}
//本部类创建实例对象
private static singleton02 instance;
//构造器私有化
private singleton02(){}
//对外公开一个方法,返回实例对象
public static singleton02 getInstance() {
return instance;
}
}
//懒汉式单例模式
class singleton03{
//本部类创建实例对象
private static singleton03 instance;
//构造器私有化
private singleton03(){}
//对外公开一个方法,返回实例对象
public static singleton03 getInstance() {
if(instance == null){
return instance=new singleton03();
}
return instance;
}
}