概念
就是采用一定的方法保证在整个的软件系统中,对某个类只能存在一个对象实力,并且该类只提供一个取得其对象实例的方法。
如何实现?
1.私有化的类的构造器。
2.内部创建类的对象。
懒汉式实现
1.私有化类的构造器
2.声明当前类对象,不进行初始化,对象为静态的
3.声明public、static的返回当前类对象的方法
class Text{
private Text(){
}
private static Text temp = null;
public static Text getTemp(){
if(temp==null){
temp = new Text();
}
return temp;
}
}
饿汉式实现
class Text{
private Text(){
}
private static Text temp = new Text();
public static Text getTemo(){
return temp;
}
}
1.私有化类的构造器
2.声明当前类对象并进行初始化,对象为静态的
3.声明public、static的返回当前类对象的方法
区分懒汉式和饿汉式
饿汉式对象加载时间过长,但是线程安全的。
懒汉式对象加载时间短(延迟对象的创建),上述写法是线程不安全的。
单例模式的优点
由于单利模式只生成一个实例,减少了系统性能开销,当一个对象的产生需要用到比较多的资源时,如读取配置、产生其他依赖对象时,则可以通过在应用启动时直接产生一个单例对象,然后永久驻留内存的方法来解决。
常用的场景
网站计数器,应用程序的日志应用,数据库连接池,读取配置文件的类,application,任务管理器,回收站等。