Java学习笔记之---单例模型
单例模型分为:饿汉式,懒汉式
(一)要点
1.某个类只能有一个实例
2.必须自行创建实例
3.必须自行向整个系统提供这个实例
(二)实现
1.只提供私有的构造方法
2.含有一个该类的静态私有对象
3.提供一个静态的公有方法用于创建,获取静态私有对象
(三)饿汉式
在对象创建过程中实例化
public class EHan {
//私有构造函数
private EHan(){
}
//创建该类型的私有静态实例
private static EHan ehan=new EHan();
//创建该类型的公有静态方法,返回静态实例对象
public static EHan getehan(){
return ehan;
}
}
class EHanTest{
public static void main(String[] args){
EHan one=EHan.getehan();
EHan two=EHan.getehan();
System.out.println(one==two);
}
}
运行结果:true
(四)懒汉式
静态公有方法中实例化
public class EHan { //私有构造函数 private EHan(){ } //创建该类型的私有静态实例 private static EHan ehan=null; //创建该类型的公有静态方法,返回静态实例对象 public static EHan getehan(){ if(ehan==null){ ehan=new EHan(); } return ehan; } } class EHanTest{ public static void main(String[] args){ EHan one=EHan.getehan(); EHan two=EHan.getehan(); System.out.println(one==two); } }
运行结果:true
(五)懒汉式PK饿汉式
1.饿汉式比懒汉式块
2.饿汉式线程安全,懒汉式存在线程风险
(六)单例模型的优点
1.在内存中只有一个对象,节省内存空间
2.避免频繁的创造和销毁对象,提高性能
3.避免对共享资源的多重占用
(七)单例模型的缺点
1.扩展比较困难
2.如果实例化后的对象长期不利于,系统将默认为垃圾进行回收,造成对象状态丢失