JAVA编写单例(Singleton)模式
程序员文章站
2022-07-14 09:03:56
...
单例(Singleton)模式:在Java应用程序中,一个类Class只有一个实例存在。
第一种写法形式(饿汉式):
定义一个类,它的构造函数为private的,它有一个private的static的该类变量,在类初始化时实例化,通过public的getInstance方法获取对它的引用,继而调用其中的方法。
Public class Singleton {
//私有化构造函数
private Singleton(){}
//在本类创建唯一实例对象,使用私有静态成员变量保存
private static Singleton instance = new Singleton();
//这里是一个供外部访问本class的静态方法,可以直接访问
public static Singleton getInstance() {
return instance;
}
}
特点:在类加载的时候就会创建对象;
好处:类,只会加载一次,所以这种写法可以保证对象的唯一性;
弊端:因为类加载的时候就会创建对象,所以有的时候还不需要使用对象,就会创建对象,造成内存的浪费;
第二种写法形式(懒汉式):
public class Singleton {
//私有化构造函数
private Singleton(){}
private static Singleton instance = null;
public static synchronized Singleton getInstance() {
//不用每次都进行生成对象,只是第一次,使用时才生成实例,提高效率
if (instance==null)
instance=new Singleton();
return instance;
}
}
特点:类加载的时候不创建对象,只有第一次调用获取函数时才创建对象;
好处:可以避免出现内存浪费的问题;
弊端:多线程环境下不能保证对象的唯一性;
上一篇: Java设计模式之简单工厂模式
下一篇: 单例模式:使用C++编写单例模式