目的:整个应用中有且只有一个实例,所有指向该类型实例的引用都指向这个实例。
好比一个国家就只有一个皇帝(xxx),此时每个人叫的“皇帝”都是指叫的xxx本人;
常见单例模式类型:
饿汉式单例:直接将对象定义出来
懒汉式单例:只给出变量,并不将其初始化;
我的总结:
饿汉式,static修饰,随着类的加载而加载,会损耗性能,但是方法相对简单
懒汉式 第一次用的时候相对较慢,因为需要加载!线程,不安全!
package reviewdemo;
//单例模式
//饿汉式,直接把对象构造出来
class singledemo{
private static singledemo s1 = new singledemo();
private singledemo(){
//提供私有化的构造方法,那么外界就不能构造对象了!
}
public static singledemo gets1() {
return s1;
}
//懒汉式,先定义,但是不创建对象
class singledemo2{
private static singledemo2 s3 ;
private singledemo2(){
public static singledemo2 gets3() {//这是一个方法,返回值为创建的对象!
if(s3 == null){
s3 = new singledemo2();
}//和饿汉式的区别,此时才来创建对象!
return s3;
public class demo14 {
public static void main(string[] args) {
singledemo s1 = singledemo.gets1();
singledemo s2 = singledemo.gets1();
singledemo2 s3 = singledemo2.gets3();
singledemo2 s4 = singledemo2.gets3();
system.out.println(s1 == s2);
system.out.println(s3 == s4);
输出:true true
备注:枚举更加安全些
enum stu{
jake;
//将构造方法私有化起来,反射也不能创建对象,安全
private stu(){
public class demo15 {