单例模式的特点
一个类只能有一个实例
自己创建这个实例
整个系统都要使用这个实例
单例模式的作用
单例模式主要保证在应用程序中一个类只有一个实例存在
在很多操作中,比如建立目录,数据库连接都需要用到这样的单线程操作,一些资源管理器常常设计成单例模式
单例模式的举例
window回收站
整个视窗系统中,回收站只能有一个实例,整个系统都使用这个唯一的实例,而且回收站自行提供自己的实例。因此回收站是单例模式
单例模式的分类
饿汉式单例
public class Singleton {
private Singleton(){}
//在自己内部定义自己一个实例
//注意这是private 只供内部调用
private static Singleton singleton = new Singleton();
//这里提供了一个供外部访问本class的静态方法,可以直接访问
public static Singleton getInstance(){
return singleton;
}
}
懒汉式单例
public class Singleton {
private static Singleton singleton;
private Singleton(){}
//这个方法比上面有所改进,不用每次都进行生成对象,只是第一次
//使用时生成实例,提高了效率!
public static synchronized Singleton getInstance(){
if(singleton==null){
singleton = new Singleton();
}
return singleton;
}
}