----------------------
ASP.Net+Unity开发、
.Net培训、期待与您交流! ----------------------
单例模式:
解决一个类在内存中只存在一个对象的情况
为了保证避免程序过多建立对象,禁止其他程序建立该类对象
为了其他程序可以访问该类对象,只好在本类中自定义对象
为了方便其他程序对自定义对象的访问,可对对象提供一些访问方式。
单例模式实现方式:
构造函数私有化
在类中创建本类对象
提供获取该对象的方法
3.1. 单例模式——懒汉式
对象时方法被调用的时候,才初始化,也称对象延时加载
public classSingle {
privateSingle(){}
private staticSingle single;
public staticSingle getSingle(){
single = newSingle();
return single;
}
}
存在的隐患:
当不同的类同事调用getSingle()方法时,存在对象被重复创建的风险,如何解决?引入同步锁。
同步函数:这种方法相对效率比较低
public classSingle {
privateSingle(){}
private staticSingle single;
public static synchronizedSingle getSingle(){
if(single!=null)
single = newSingle();
return single;
}
}
同步代码块:降低了获取锁的次数,提高了效率
public staticSingle getSingle(){
if(single==null)
synchronized(Single.class){
if(single!=null)
single = newSingle();
}
return single;
}
3.2. 单例模式——饿汉式
类已进入内存,就创建好了对象,程序示例:
public classSingle {
privateSingle(){}
private staticSingle single = newSingle();
public staticSingle getSingle(){
return single;
}
}
----------------------
ASP.Net+Unity开发、
.Net培训、期待与您交流! ----------------------详细请查看:
www.itheima.com