常见的单例模式

什么是单例

单例模式:是 Java 中最简单的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。
单例模式可以保证系统中,应用该模式的这个类永远只有一个实例,即一个类永远只能创建一个对象

注意

1. 单例类只能有一个实例。
2. 单例类必须自己创建自己的唯一实例。
3. 单例类必须给所有其他对象提供这一实例。
常见的单例模式:饿汉单例和懒汉单例

饿汉单例在用类获取对象的时候,对象已经提前为你创建好了

设计步骤:

1.定义一个类,把构造器私有
2.定义一个静态变量存储一个对象

实现:
public class SingleIstance {

public static SingleIstance instance=new SingleIstance();
/**
 * 必须把构造器私有化
 * */
private SingleIstance(){
}

}
测试
public class Test1 {

public static void main(String [] args){
	//不合法的构造函数
     //编译时错误:构造函数 SingleIstance() 是不可见的
	//SingleIstance s1=new SingleIstance(); 报错 
	SingleIstance s1=SingleIstance.instance;
	SingleIstance s2=SingleIstance.instance;
	System.out.println(s1==s2);  //true  表名实现了单例
}

}

懒汉单例:在真正需要改对象的时候,才去创建一个对象(延迟加载对象)

设计步骤:

定义一个类,把构造器私有
定义一个静态变量存储一个对象
提供一个返回单例对象的方法

实现:
public class SingleInstance2 {

private static SingleInstance2 instance;  //最好私有化,这样可以避免给别人挖坑
/**
 * 2.定义一个静态的成员变量负责存储一个对象
 * 
 *   只加载一次,只有一份,
 *   最好私有化,这样可以避免给别人挖坑
 * */
public static SingleInstance2 getInstance(){
	if(instance==null){
		//第一次来拿对象,此时需要创建对象
		instance=new SingleInstance2();
	}
	return instance;
}
	
/**
 * 3.提供一个方法,对外返回单例对象
 * */

public SingleInstance2(){}
/**
 * 1.私有化构造器
 * */

}
测试:
public class Test2 {

public static void main(String [] args){
	//SingleIstance s1=new SingleIstance(); 报错 
	SingleInstance2 s1=SingleInstance2.getInstance();
	SingleInstance2 s2=SingleInstance2.getInstance();
	System.out.println(s1==s2);  //true  表名实现了单例
}

}

posted @ 2022-06-20 19:57  小冷漠  阅读(34)  评论(0编辑  收藏  举报