单例模式

解决的问题

保证一个类在内存中的对象唯一性。必须对多个程序使用同一个配置信息对象时,就需要保证该对象的唯一性。

解决的方法

a) 不允许其他程序用new创建该类对象
b) 在该类创建一个本类实例
c) 对外提供一个方法让其他程序可以获取该对象
也就是说创建一个静态变量指向对象,因为静态变量公用,间接使得静态变量指向的对象也公用
另外,创建私有构造函数使得其他类无法创建该类的对象,从而保证了实例的唯一性

解决的步骤

a) 私有化该类的构造函数
b) 通过new在本类中创建一个本类对象
c) 定义一个公用的方法,将创建的对象返回

//饿汉式============================类一加载,就生成对象
class Single
{
	private static Single single = new Single();//注意要设成私有(因为对象要共享,对象指针共享就可以),single 在静态方法区,而对象仍然在堆中
	private Single(){}                  //私有化之后只有本类可以调用
	public static Single getSingle()	//因为该对象不能再调用,所以只能通过类名调用
	{									//所以需要将该函数设为static
		return single;					//因为用到了single,所以single也得设为static
	}
	
}
//懒汉式============================只有调用getSingle()方法时,才生成对象
//(多线程存在安全隐患,面试用,因为涉及的问题多)
class Single
{
	private static Single single = null;
	private Single(){}
	public static Single getSingle()
	{
		if(single==null)
			single=new Single();
		return single;
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值