单例设计模式:对外只能得到一个对象的设计模式.
单例模式有以下特点:
1、单例类只能有一个实例。
2、单例类必须自己创建自己的唯一实例。
3、单例类必须给所有其他对象提供这一实例。
单例模式确保某个类只有一个实例,而且自行实例化并向整个系统提供这个实例。在计算机系统中,线程池、缓存、日志对象、对话框、打印机、显卡的驱动程序对象常被设计成单例。这些应用都或多或少具有资源管理器的功能。
单例设计模式的实现方式主要有两种:
A:懒汉式
操作步骤:
1.声明一个私有的静态的本类类型的对象
2.构造函数私有化
3.提供一个公有的静态的本类类型的方法返回本类类型的对象,
返回之前判断之前是否实例化过本类类型的对象,如果没有实例化
则实例化对象,如果已经实例化完成了,则直接返回.
//懒汉式设计代码的模板
class Person{
private static Person instance;
private Person(){
System.out.println("===private Person()====");
}
public static Person getInstance(){
if(instance==null){
instance=new Person();
System.out.println("创建一次");
}
return instance;
}
}
调用
public class stongTest {
public static void main(String[] ages){
Singleton a=Singleton.getInstance();
Singleton b=Singleton.getInstance();
if(a==b){
System.out.println("同一个对象");
}else{
System.out.println("不同的对象");
}
}
}
B:饿汉式
操作步骤:
1.声明一个私有的静态的最终的本类类型的对象并实例化;
2.构造函数私有化
3.提供一个公有的静态的本类类型的方法返回本类类型的对象
//饿汉式设计代码的模板
class Person{
private static final Person instance=new Person();
private Person(){
System.out.println("===private Person()====");
}
public static Person getInstance(){
return instance;
}
}
class TestSingleInstanceDemo07{
public static void main(String[] args){
Person p1=Person.getInstance();
Person p2=Person.getInstance();
System.out.println("p1==p2的值:"+(p1==p2));
}
}
https://www.cnblogs.com/chenxuyuan/articles/5017795.html