饿汉式的代码实现及使用代码进行详细介绍
package 单例模式;
/*
* 步骤
* 1.构造器私有化(防止new 对象)
* 2.类的内部创建对象
* 3.向外暴露一个静态的公共方法
* 4.代码实现
* 优缺点分析
* 优点:不用考虑现成的安全问题
* 缺点:一开始就创建了,如果没有使用此对象将会造成内存空间的浪费
*/
public class 饿汉式 {
public static void main(String[] args) {
Single s1=Single.getInstance();
Single s2=Single.getInstance();
//判断是否是同一个对象
System.out.println(s1==s2);
//使用哈希值判断
System.out.println(s1.hashCode());
System.out.println(s2.hashCode());
System.out.println(s1.hashCode()==s2.hashCode());
System.out.println("************");
Sing s3=Sing.getInstance();
Sing s4=Sing.getInstance();
//判断是否是同一个对象
System.out.println(s3==s4);
//使用哈希值判断
System.out.println(s3.hashCode());
System.out.println(s4.hashCode());
System.out.println(s3.hashCode()==s4.hashCode());
}
}
//饿汉式(静态变量)
class Single{
//私有化构造器防止外部进行new创建对象
private Single() {
}
//内部创建一个对象实例
private final static Single single=new Single();
//创建一个公共方法返回实例对象
public static Single getInstance() {
return single;
}
}
//饿汉式(静态代码块)
class Sing {
//1.私有化构造函数,防止外部使用new创建对象实例
private Sing() {
}
private static Sing sing;
//使用静态代码块
static {
sing=new Sing();
}
//创建公共方法返回实例对象
public static Sing getInstance() {
return sing;
}
}
运行结果: