14.Java基础:设计模式----->单例模式

1.单例模式中类中只有一个实例

2.这个实例要自己创建

3.单例模式有两种写法:懒汉式、恶汉式

5.在写懒汉式,要注意会出现线程问题。


以下代码体现恶汉式写法

这个类是一个恶汉式单例

class Single
{
	private static Single s = new Single();
	//构造私有化
	private Single(){}
	//提供全局静态方法
	public static Single  getInstance()
	{
		return s;
	}
}
这个类是执行类

class SingleDemo 
{
	public static void main(String[] args) 
	{
		Single s = Single.getInstance();
		System.out.println("s="+s);
	}
}
以下代码体现懒汉式写法
这个类是一个懒汉式单例,不过在多线程会出现并发访问问题,解决方法是进行加锁synchronized关键子。

同时,为了解决效率问题,减少判断锁的次数,可以通过双重判断的方式。

//延时加载,懒汉式
class Single
{
	//1、私有本类构造方法
	private Single2(){}
	//2、创建本类对象
	private static Single2 instance = null;
	//3、对外提供访问本类对象的功能
	public static Single2 getInstance()
	{
		if( instance == null )
		{
			synchronized(Single.class)
			{
				if(instance == null) {
					//如果不加锁,这里有多线程安全问题
					instance = new Single();
				}
			}

		}
		return instance;
	}
}
这个类是执行类
class SingleDemo 
{
	public static void main(String[] args) 
	{
		Single s = Single.getInstance();
		System.out.println("s="+s);
	}
}

总结:

1.静态不能实现接口

2.单例可以被延迟初始化,静态在第一次加载是初始化,可以提升性能。

3.可以被继承,方法可以重写

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值