一.单例模式的定义:
单例模式确保某个类只有一个实例,而且自行实例化并向整个系统提供这个实例。
二.单例模式的特点
1、单例类只能有一个实例。 2、单例类必须自己创建自己的唯一实例。 3、单例类必须给所有其他对象提供这一实例。
三.单例模式的优缺点:
优点1.在内存中只有一个对象,节省空间 2.避免频繁的创建销毁对象,提高性能 3.避免对共享资源的多重占用
缺点: 1.扩展比较困难 2.实例化的对象长期不利用,系统默认认为垃圾回收,造成对象状态丢失
四.单例模式使用场景
1.创建对象时占用资源多,但同时需要用到该类对象 2.对系统内资源要求统一读写,如读写配置信息 3.当多个实例存在可能引起逻辑错误,如号码生产器
单例模式分为两种:
饿汉式:
package happy
.animal
;
public class SingleOne {
private SingleOne() {};
private static SingleOne intance
=new SingleOne();
public static SingleOne
getIntance() {
return intance
;
}
}
package happy
.animal
;
public class test {
public static void main(String
[] args
) {
SingleOne one
=SingleOne
.getIntance();
SingleOne two
=SingleOne
.getIntance();
System
.out
.println(one
==two
);
}
}
懒汉式:
package maintest
;
public class SingleTow {
private SingleTow() {};
private static SingleTow instance
=null
;
public static SingleTow
getinstance() {
if(instance
==null
) {
instance
=new SingleTow();
}
return instance
;
}
}
饿汉式与懒汉式的优缺点:
饿汉式:以空间换时间,线程安全 懒汉式:以时间换空间,线程存在风险