2、单例设计模式

一、单例设计模式

 

    解决一个类在内存中只存在一个对象

 

二、怎样保证对象的唯一呢?

 

  1. 避免其他程序过多建立该类对象,先禁止其他程序建立该类对象
  2. 为了让其他程序可以访问到该类对象,只好在本类中,自定义一个对象
  3. 为了方便其他程序对自定义对象的访问,可以对外提供一些访问方式

三、这三部怎么用代码体现呢?

 

  1. 将构造函数私有化
  2. 在类中创建一个本类对象
  3. 提供一个方法可以获取到该对象

 四、示例

class Student
{
	private Student(){}//禁止在外部创建对象
	private static Student s=new Student();//自己建一对象
	public static Student getStudent()//方法,获取对象
	{
		return s;
	}
	//对于事物该怎么描述还怎么描述
	//当需要将该事物的对象保证在内存中唯一时,就将以上的三步加上即可
	private int age;
	public void setAge(int age)
	{
		this.age=age;
	}
	public int getAge()
	{
		return age;
	}	
}

 

五、单例设计模式有两种

 

1,饿汉式:Single类一进内存,就已经创建好了对象

class Single
{
	private Single(){}
	private static Single s = new Single();
	public static Single getInstance()
	{
		return s;
	}
}

 

2,懒汉式:single类进内存,对象还没有存在,只有调用了getInstance()方法时,才建立对象,是延迟加载方式

class Single
{
	private Single(){}
	private static Single s = null;
	public static Single getInstance()
	{
		if (s == null)
		{
			s = new Single();
		}
		return s;
	}
}

3,上述代码在在多线程中存在安全隐患,有可能建立两个甚至多个Single对象

 

优化:

class Single
{
	private Single(){}
	private static Single s = null;
	public static Single getInstance()
	{
		if (s == null)
		{
			synchronized(Single.class)
			{
				if(s == null)
					s = new Single();
			}
		}
		return s;
	}
}

 

六、在实际开发中,用饿汉式,更简洁,安全

 

    Runtime类就是采用单例模式设计的

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值