设计模式 --单例模式

package singleton_pattern;
/*
 * 设计模式
 * 		--单例模式
 */
public class SingleTonPattern {
	public static void main(String[] args) {
		SingleTon s1=SingleTon.getInstance();
//		SingleTon s2=SingleTon.getInstance();
		System.out.println(s1);
		SingleTon2 s3=SingleTon2.getInstance();
		System.out.println(s3);
		SingleTon3 s4=SingleTon3.getInstance();
		System.out.println(s4);
		SingleTon4 s5=SingleTon4.getInstance();
		System.out.println(s5);
	}
}
/*
 * -----------饿汉式-------------------
 */
class SingleTon{
	//单例的必要操作--构造方法私有化
	private SingleTon() {}
	//创建静态私有成员变量new一个实例对象
	private static SingleTon st=new SingleTon();
	//公有方法返回
	public static SingleTon getInstance() {
		return st;
	}
}
/*
 * -------------饱汉式(线程不安全)-----------
 */
class SingleTon2{
	//同样的配方,私有构造
	private SingleTon2(){}
	//创建静态私有成员变量赋null
	private static SingleTon2 st=null;
	public static SingleTon2 getInstance() {
		if(st==null)
			st=new SingleTon2();
		return st;
	}
}
/*
 * -------------饱汉式(线程安全-加同步锁)-----------
 */
class SingleTon3{
	//同样的配方,私有构造
	private SingleTon3(){}
	//创建静态私有成员变量赋null
	private static SingleTon3 st=null;
	public static SingleTon3 getInstance() {
		if(st==null) {
			synchronized (SingleTon3.class) {
				if(st==null)//双重判断,很nice
					st=new SingleTon3();
			}
		}
		return st;
	}
}
/*
 * -------------饱汉式(线程安全-内部类)--------------
 */
class SingleTon4{
	//同样的配方,私有构造
	private SingleTon4(){}
	//静态内部类
	private static class Instance{
		 private static SingleTon4 st=new SingleTon4();
	}
	public static SingleTon4 getInstance() {
		return Instance.st;
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值