Java 单例设计模式(适用于初学者)

对初学者而言,单例设计模式掌握2种即可(饿汉和懒汉模式)
public class DanLiMoShi {

public static void main(String[] args) {
	A ss = A.getInstance();
	A s  = A.getInstance();
	ss.show();
	s.show();
	System.out.println("s 的哈希code: "+s.hashCode());
	System.out.println("ss的哈希code: "+ss.hashCode());
	System.out.println("s 的identityHashCode: "+System.identityHashCode(s));
	System.out.println("ss的identityHashCode: "+System.identityHashCode(ss));
	//饿汉单例的哈希code输出的结果都是一样的,说明创建的对象确实是同一个
	
	System.out.println("------------------饿汉懒汉分界线---------------------------");
	
	B b = B.getInstance();
	B bb = B.getInstance();
	b.show();
	bb.show();
	System.out.println("b 的哈希code: "+b.hashCode());
	System.out.println("bb的哈希code: "+bb.hashCode());
	System.out.println("b 的identityHashCode: "+System.identityHashCode(b));
	System.out.println("bb的identityHashCode: "+System.identityHashCode(bb));
	//懒汉单例的Hashcode输出的结果都是一样的,说明创建的对象确实是同一个
	
	//顺便复习了一下Hashcode和identityHashCode
	//hashCode方法可以被重写并返回重写后的值,
	//identityHashCode会返回对象的hash值而不管对象是否重写了hashCode方法。
}

}

class A{
//饿汉单例模式(线程安全)

private A() {}		   //1)将构造器私有化
private static A a = new A();      //2)新创建一个私有的、静态的 该类类型的实例
public static A getInstance() {     //3)声明一个公共的、静态的get方法,return该实例
	return a;
}

void show(){
	System.out.println("饿汉单例测试");
}

}

class B{
//懒汉单例模式(线程不安全)

private B() {};  //1)将构造器私有化
private static B b;//此时b==null   //2)定义一个私有的、静态的 该类类型的实例
public static B getInstance() {    //3)声明一个公共的、静态的get方法,return该实例(return之前需要判断该实例是否是为null)
	if(b==null) {
		b=new B();
	}
	return b;
}

void show() {
	System.out.println("懒汉单例模式");
}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值