- 单例模式
1.构造器私有化,不允许外部直接创建
2.单例类内部创建一个自身的对象
3.获取对象 - 懒汉模式和饿汉模式和区别
1.饿汉模式在创建对象时不使用new构造器
2.懒汉模式在获取对象时,new
3.饿汉模式类加载时速度比较慢,运行时获取对象速度比较快,线程安全
4.懒汉模式类加载时速度比较快,运行时获取对象速度比较慢,线程不安全 - 知识点
1.类的属性
2.类内部可以调用类的私有化方法(私有化构造器)
3.使用类名调用方法,static - 使用情况
1.一个类中只有一个对象,仅有一个实例
2.如:配置文件/工具类/线程池/缓存/日志对象等 - 优点
1.一个实例,减少内存开支,频繁创建销毁
2.避免对资源的多重占用,避免对同一个资源文件的同时写操作 - 缺点
1.没有接口,扩展困难:接口和抽象类不能被实例化,无意义
2.注意垃圾回收机制:解决的两种方法
(1)由容器管理单例模式的生存周期,java EE容器或者框架级容器,如Spring,可以让对象长久驻留
(2)状态随时记录,获取销毁前的纪录
//饿汉模式
class Singleton_model1{
//单例类内部创建一个自己本身的对象,不new
private static Singleton_model1 s;
//构造器私有化
private Singleton_model1() {
}
//获得单例的对象,调用内部构造器
public static Singleton_model1 getSingleton1() {
if(s == null) {
s = new Singleton_model1();
}
return s;
}
}
//懒汉模式
class Singleton_model2{
//单例类内部创建一个自己本身的对象,new
private static Singleton_model2 s = new Singleton_model2();
//构造器私有化
private Singleton_model2() {
}
//获得单例的对象
public static Singleton_model2 getSingleton() {
return s;
}
}